我有一个点(484,3,1(的3d numpy数组和一个2d变换矩阵(3,3(。我想计算所有 484 个点的变换。
我试图重塑数组并计算点积,但我正在努力让它输出一个 (484,3,1( 形状的数组,其中所有点都被转换。
points = np.random.randint(0, 979, (484,3,1))
transformation = array([[0.94117647, 0. , 0. ],
[0. , 0.94117647, 0. ],
[0. , 0. , 1. ]])
points.shape = (484,3,1)
transformation = (3,3)
transformation.dot(points).shape = (3,484,1)
我希望这尽可能优化。任何建议将不胜感激。
只需对(484,3)
尺寸进行重塑并使用np.matmul
(也可以np.dot
,但由于您正在寻找矩阵乘法matmul
根据文档首选(产品
np.matmul(points.reshape(484,-1), transformation).reshape(484,3,-1)
当然,生成的形状与上次重塑给出的形状相同:(484,3,1)