NumPy:将矩阵乘以数组的更好方法?

时间:2010-11-29 21:07:32

标签: numpy

我正在与NumPy array做一些工作,但偶尔我需要将它们乘以数组。

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

rotation_matrix = np.matrix([ ... ])
for vector in vectors:
    rotated_vec_mat = vector.T * rotation_matrix
    vector[:] = np.array(rotated_vec_mat)[0]

但那很丑(而且很慢?)。

有更清洁的方法吗?

1 个答案:

答案 0 :(得分:3)

这样做可能更有意义:

vector_arr = np.concatenate([vector[np.newaxis, :] for vector in vectors], axis=0)
rotated_vector_arr = np.dot(vector_arr, rotation_matrix)

然后rotated_vector_arr的行就是你想要的那些。您可以将整个事物视为一个矩阵产品,并通过BLAS库在C / Fortran中完成循环。

没有必要使用matrix()类进行矩阵乘法,数组工作正常。 matrix()重载了*运算符,但我发现它只会让事情混乱。