Hoo*_*ked 18 python numpy rotation vectorization
我具有存储在numpy的阵列的3D点的列表A
具有形状(N,3)
和旋转矩阵R
与形状(3,3)
.我想计算的点积R.x
每个点x
在A
原地.天真我能做到这一点:
for n in xrange(N):
A[n,:] = dot(R, A[n,:])
Run Code Online (Sandbox Code Playgroud)
有没有办法用本地numpy调用来对此进行矢量化?如果重要的话,N就是几千的订单.
有几个小的更新/澄清点要添加到 Aapo Kyrola 的(正确)答案中。首先,使用最近添加的矩阵乘法运算符可以稍微简化矩阵乘法的语法@
:
A = A @ R.T
Run Code Online (Sandbox Code Playgroud)
此外,您可以通过A
在乘法之前进行转置,然后转置结果,以标准形式(先旋转矩阵)排列变换:
A = (R @ A.T).T
Run Code Online (Sandbox Code Playgroud)
您可以通过以下断言检查两种形式的转换是否产生相同的结果:
np.testing.assert_array_equal((R @ A.T).T, A @ R.T)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9390 次 |
最近记录: |