NumPy:用一个数组乘以一个矩阵的更好方法?

NumPy:用一个数组乘以一个矩阵的更好方法?,numpy,Numpy,我正在使用NumPyarrays进行一些工作,但有时我需要将它们与数组相乘 现在,我正在做一些类似的事情: rotation_matrix = np.matrix([ ... ]) for vector in vectors: rotated_vec_mat = vector.T * rotation_matrix vector[:] = np.array(rotated_vec_mat)[0] 但这很难看(而且很慢?) 有更干净的方法吗?这样做可能更有意义: vector_a

我正在使用NumPy
array
s进行一些工作,但有时我需要将它们与数组相乘

现在,我正在做一些类似的事情:

rotation_matrix = np.matrix([ ... ])
for vector in vectors:
    rotated_vec_mat = vector.T * rotation_matrix
    vector[:] = np.array(rotated_vec_mat)[0]
但这很难看(而且很慢?)


有更干净的方法吗?

这样做可能更有意义:

vector_arr = np.concatenate([vector[np.newaxis, :] for vector in vectors], axis=0)
rotated_vector_arr = np.dot(vector_arr, rotation_matrix)
然后,
rotated\u vector\u arr
的行就是您想要的。您可以将整个过程视为一个矩阵积,并通过BLAS库在C/Fortran中完成循环


不需要使用matrix()类来进行矩阵乘法,数组可以正常工作。matrix()重载了*运算符,但我发现它只是混淆了事情。

Hrm…我不明白。调用
np.concatenate
有什么作用?例如,如果
vector=np.array([1,2,3])
np.concatenate(vector[np.newaxis,:],axis=0)
只返回
np.array([1,2,3])
。呃,我忘了其中的列表理解。