我有一组变换矩阵来变换3D点。我基本上有大约62个[4x4]矩阵。
等效地,我有1个[4x1] 3D点。
正确,现在我要遍历每个变换,并将相应的变换矩阵应用于同一点。有什么方法可以利用Numpy的张量表示更干净地做到这一点吗?
答案 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个矩阵的结果,第二个轴是点坐标,第三个轴是点的数量