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 次 |
| 最近记录: |