在numpy中使用旋转矩阵有效地旋转一组点
问题描述
我有一个存储在 numpy 数组 A
中的 3D 点列表,形状为 (N,3)
和一个旋转矩阵 R
的形状<代码>(3,3)代码>.我想就地计算 A
中每个点 x
的 R.x
的点积.天真地我可以这样做:
I have a list of 3D points stored in numpy array A
with shape (N,3)
and a rotation matrix R
with shape (3,3)
. I'd like to compute the dot product of R.x
for each point x
in A
in-place. Naively I can do this:
for n in xrange(N):
A[n,:] = dot(R, A[n,:])
有没有办法通过本机 numpy 调用对其进行矢量化?如果重要的话,N 大约是几千.
Is there a way to vectorize this with a native numpy call? If it matters, N is on order of a couple thousand.
解决方案
可以将 A 与旋转矩阵的转置相乘:
You can multiply A with the transpose of the rotation matrix:
A = dot(A, R.T)
相关文章