假设我需要表示矢量值信号。让我们说一个在平面上旋转的点的坐标:
t = 0.05 * np.arange(100)
x = np.cos(t)
y = np.sin(t)
现在我已经以这种方式定义了这个位置:
p = np.array([x,y])
所以时间是我的多向量的最后一个轴。这在许多方面都很好(实际上我处理的是3D矢量和3x3矩阵)。
然而,在许多情况下,我觉得在第一轴上有时间会更好。例如,如果我有一个恒定的位置
p0 = np.array([1.0,1.0])
为差异写出(p - p0)会很好...如果时间是最后一个轴,我就无法如此干净地表达出来!
我知道这只是一个品味问题,但在这种情况下,数字社区中是否存在首选或常规选择?
我认为Matrix-Vector产品将是一个很好的测试,以了解库是否设计为在两个选项之一中的首选项。但我发现在这两种情况下都没有办法以简单的方式表达这样的操作......(我已经尝试过dot product和matrix_vector_product,但最后我发现自己使用的是np.einsum):
>>> M.shape
(2, 2, 100)
>>> v.shape
(2, 100)
>>> np.einsum('ij...,j...', M, v)