Python Numpy 将旋转矩阵应用于数组中的每一行
Python Numpy Apply Rotation Matrix to each line in array
我有一个旋转矩阵,我正在使用 .dot
将其应用于新值。
如何将它应用于 numpy 数组中的每一行?
Numpy 数组如下所示:
[-0.239746 -0.290771 -0.867432]
[-0.259033 -0.320312 -0.911133]
[-0.188721 -0.356445 -0.889648]
[-0.186279 -0.359619 -0.895996]
想要做类似的事情,for each line in array, rotation_matrix.dot(line)
并将每一行添加到新数组
对 Numpy 不太熟悉,所以我敢肯定它很简单,但我无法掌握。
将 a 矩阵与旋转矩阵相乘可单独旋转所有列。只需向前转置、相乘并转回即可旋转所有行:
a = np.array([
[-0.239746,-0.290771,-0.867432],
[-0.259033,-0.320312,-0.911133],
[-0.188721,-0.356445,-0.889648],
[-0.186279,-0.359619,-0.895996],
])
rot = np.array([
[0.67151763, 0.1469127, 0.72627869],
[0.47140706, 0.67151763, -0.57169875],
[-0.57169875, 0.72627869, 0.38168025],
])
print a
print "-----"
for i in range(a.shape[0]):
print a[i, :]
print "-----"
for i in range(a.shape[0]):
print rot.dot(a[i, :])
print "-----"
print rot.dot(a.T).T
假设您有一个 3x3 旋转矩阵 R,并且您想要矩阵乘以大小为 3 的向量作为数组 A 中的行 ra,以在数组 B 中生成大小为 3 的旋转向量 rb:
import numpy as np
# Define numpy array.
A = np.array([[-0.239746, -0.290771, -0.867432],
[-0.259033, -0.320312, -0.911133],
[-0.188721, -0.356445, -0.889648],
[-0.186279, -0.359619, -0.895996]])
# Define resulting zero array B.
B = np.zeros(A.shape)
# Loop over rows and determine rotated vectors.
for ra,rb in zip(A,B):
rb = np.dot(R,ra)
a.dot(rot)
应该做你想做的。
我有一个旋转矩阵,我正在使用 .dot
将其应用于新值。
如何将它应用于 numpy 数组中的每一行?
Numpy 数组如下所示:
[-0.239746 -0.290771 -0.867432]
[-0.259033 -0.320312 -0.911133]
[-0.188721 -0.356445 -0.889648]
[-0.186279 -0.359619 -0.895996]
想要做类似的事情,for each line in array, rotation_matrix.dot(line)
并将每一行添加到新数组
对 Numpy 不太熟悉,所以我敢肯定它很简单,但我无法掌握。
将 a 矩阵与旋转矩阵相乘可单独旋转所有列。只需向前转置、相乘并转回即可旋转所有行:
a = np.array([
[-0.239746,-0.290771,-0.867432],
[-0.259033,-0.320312,-0.911133],
[-0.188721,-0.356445,-0.889648],
[-0.186279,-0.359619,-0.895996],
])
rot = np.array([
[0.67151763, 0.1469127, 0.72627869],
[0.47140706, 0.67151763, -0.57169875],
[-0.57169875, 0.72627869, 0.38168025],
])
print a
print "-----"
for i in range(a.shape[0]):
print a[i, :]
print "-----"
for i in range(a.shape[0]):
print rot.dot(a[i, :])
print "-----"
print rot.dot(a.T).T
假设您有一个 3x3 旋转矩阵 R,并且您想要矩阵乘以大小为 3 的向量作为数组 A 中的行 ra,以在数组 B 中生成大小为 3 的旋转向量 rb:
import numpy as np
# Define numpy array.
A = np.array([[-0.239746, -0.290771, -0.867432],
[-0.259033, -0.320312, -0.911133],
[-0.188721, -0.356445, -0.889648],
[-0.186279, -0.359619, -0.895996]])
# Define resulting zero array B.
B = np.zeros(A.shape)
# Loop over rows and determine rotated vectors.
for ra,rb in zip(A,B):
rb = np.dot(R,ra)
a.dot(rot)
应该做你想做的。