我有一个存储在具有形状(N,3)的ndarray中的3D点 p 列表。对于每个点,我有一个带有形状(3,3)的旋转矩阵 R ,因此矩阵 M 的ndarray具有形状(N,3,3)。我想为 p 中的每个点 x 计算 Rx 的点积,并且每个旋转 R 的中号即可。天真我能做到这一点:
N = int(1e4)
p = np.random.random((N, 3))
M = np.random.random((N, 3, 3))
result = np.zeros_like(p)
for i in range(N):
result[i, :] = np.dot(M[i, :, :], p[i, :])
有没有办法在没有python-layer for循环的情况下执行此操作?
请注意,此问题概括了密切相关的问题Efficiently rotate a set of points with a rotation matrix in numpy