2
我々は3 x 3
回転行列R
を持っている場合、それは、v
で3 x N
アレイ乗算することができる - N
列ベクトルの配列 - 回転の新しい3 x N
アレイを生成するためにこのようなベクターは、:回転行列の配列によってベクターのアレイの回転
v_rotated = R.dot(v)
は、今、私たちはN x M x 3
配列、私はN
異なる3 x 3
回転行列(ベクトルの各「行」のための1つの回転行列)で回転したいN
回M
ベクトルを、持っていると仮定します。これはループでは簡単ですが、より高速でコンパクトな(ベクトル化された)方法があります。 numpy
のdot
またはtensorproduct
?ループの実装のための
例コード:
from numpy import cos, sin, array, pi, linspace, random
# 100 different rotation matrices:
R = [array([[1, 0, 0], [0, cos(theta), -sin(theta)], [0, sin(theta), cos(theta)]]) for theta in linspace(0, pi, 100)]
# 100 x 200 random vectors:
v = random.random((100, 200, 3))
# rotate vectors in loop:
rotated_v = array([R_.dot(v_.T).T for R_, v_ in zip(R, v)])
シェア愚かコード我々はすべての提案された解決策に戻って確認することができるようにあなたは、実装している場合? – Divakar
@Divakarはルフィコードを追加しました(もちろんおもちゃの例) – sulkeh