如何计算多个点的仿射变换?



我有一个点(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)

最新更新