在numpy中使用旋转矩阵有效地旋转一组点 [英] Efficiently rotate a set of points with a rotation matrix in numpy

查看:41
本文介绍了在numpy中使用旋转矩阵有效地旋转一组点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个存储在 numpy 数组 A 中的 3D 点列表,形状为 (N,3) 和一个旋转矩阵 R 的形状<代码>(3,3).我想就地计算 A 中每个点 xR.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)

这篇关于在numpy中使用旋转矩阵有效地旋转一组点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆