NumPy: лучший способ умножить матрицу на массив на месте? - PullRequest
3 голосов
/ 30 ноября 2010

Я работаю с 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]

Но это уродливо (и медленно?).

Есть ли более чистый способ сделать это?

1 Ответ

3 голосов
/ 30 ноября 2010

Возможно, имеет смысл сделать это:

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 - это то, что вы хотите, чтобы они были.Вы можете рассматривать все это как один матричный продукт и выполнять цикл в C / Fortran библиотекой BLAS.

Нет необходимости использовать класс matrix () для умножения матриц, массивы работают нормально.matrix () перегружает оператор *, но я нахожу, что он просто сбивает с толку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...