gpt4 book ai didi

python - 使用 numpy 将矩阵乘以点数组?

转载 作者:太空狗 更新时间:2023-10-29 22:09:20 25 4
gpt4 key购买 nike

我有一个数组,其中包含一堆点(特别是 3D 向量):

pts = np.array([
[1, 1, 1],
[2, 2, 2],
[3, 3, 3],
[4, 4, 4],
[5, 5, 5],
])

我想将这些点中的每一个乘以一个变换矩阵:

pts[0] = np.dot(transform_matrix, pts[0])
pts[1] = np.dot(transform_matrix, pts[1])

pts[n] = np.dot(transform_matrix, pts[n])

我怎样才能有效地做到这一点?

最佳答案

我发现首先编写 einsum 版本会有所帮助——在您看到索引后,您通常可以认识到有一个更简单的版本。例如,从

开始
>>> pts = np.random.random((5,3))
>>> transform_matrix = np.random.random((3,3))
>>>
>>> pts_brute = pts.copy()
>>> for i in range(len(pts_brute)):
... pts_brute[i] = transform_matrix.dot(pts_brute[i])
...
>>> pts_einsum = np.einsum("ij,kj->ik", pts, transform_matrix)
>>> np.allclose(pts_brute, pts_einsum)
True

你可以看到这很简单

>>> pts_dot = pts.dot(transform_matrix.T)
>>> np.allclose(pts_brute, pts_dot)
True

关于python - 使用 numpy 将矩阵乘以点数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26289972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com