Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy将旋转矩阵应用于数组中的每一行_Python_Arrays_Numpy_Matrix_Rotational Matrices - Fatal编程技术网

Python Numpy将旋转矩阵应用于数组中的每一行

Python Numpy将旋转矩阵应用于数组中的每一行,python,arrays,numpy,matrix,rotational-matrices,Python,Arrays,Numpy,Matrix,Rotational Matrices,我有一个旋转矩阵,正在使用.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] 要对数组中的每一行执行类似的操作,,旋转矩阵.dot(line),然后将每一行添加到新数组中 不太熟悉Numpy,所

我有一个旋转矩阵,正在使用
.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]
要对数组中的每一行执行类似的操作,
,旋转矩阵.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)

应该做你想做的。

旋转矩阵的形状是什么?您是否编写了实现该伪代码的代码?据我所知,你可以试试:
np.tensordot(旋转矩阵,输入数组,轴=(1,1))
。这在数学上是错误的,旋转是
rot.dot(a)
其中
a
是向量
a.dot(rot)