Numpy-如何向量化多个变换矩阵

时间:2019-01-28 21:27:24

标签: python numpy

我有一组变换矩阵来变换3D点。我基本上有大约62个[4x4]矩阵。

等效地,我有1个[4x1] 3D点。

正确,现在我要遍历每个变换,并将相应的变换矩阵应用于同一点。有什么方法可以利用Numpy的张量表示更干净地做到这一点吗?

1 个答案:

答案 0 :(得分:1)

您可以这样做

import numpy as np


transf = np.random.randint(1,9,(62,4,4))
points = np.random.randint(0,9,(4,62))

res = np.dot(transf,points)

print(res.shape)
print(res[0][:,0],np.dot(transf[0],points[:,0]))

# (62, 4, 62) -> (numb_transformation, point_coord, numb_of_points)
# [35 13 39 29] [35 13 39 29]

我首先要证明结果是相同的。

这基本上沿“ transf”的0轴获取每个矩阵,并将其应用于“点”数组,其中每一列都是一个点,因此您有一个形状(4,n_points)

结果将是一个数组,其中第一个轴是应用第n个矩阵的结果,第二个轴是点坐标,第三个轴是点的数量