我正在与NumPy array
做一些工作,但偶尔我需要将它们乘以数组。
现在,我正在做类似的事情:
rotation_matrix = np.matrix([ ... ])
for vector in vectors:
rotated_vec_mat = vector.T * rotation_matrix
vector[:] = np.array(rotated_vec_mat)[0]
但那很丑(而且很慢?)。
有更清洁的方法吗?
答案 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()重载了*运算符,但我发现它只会让事情混乱。