在一个当前项目中,我有一个形状为(I,J,K,N)的大型多维数组和一个维度为N的方阵。
我需要对数组的最后一个轴执行与方阵的矩阵向量乘法。
因此,显然的解决方案是:
我需要对数组的最后一个轴执行与方阵的矩阵向量乘法。
因此,显然的解决方案是:
for i in range(I):
for j in range(J):
for k in range(K):
arr[i,j,k] = mat.dot(arr[i,j,k])
但是这种方法速度相对较慢。因此,我也尝试了NumPy的tensordot函数,但成果有限。 我期望像这样:
arr = tensordot(mat,arr,axes=((0,1),(3)))
应该可以解决问题,但我收到了形状不匹配的错误。
有没有更好的解决方法或者知道如何正确使用tensordot?
谢谢!
xyzRot = matrix_multiply(rot,xyz[...,np.newaxis]).reshape(xyz.shape)
,其中rot
是一个(3,3)
的旋转矩阵,而xyz
是一个形状为(n,3)
的向量数组。非常有用! - letmaik