Скажем, у меня есть 2d NumPy ndarray, например, так:Как можно применить матричное преобразование к каждой строке массива NumPy?
[[ 0, 1, 2, 3 ],
[ 4, 5, 6, 7 ],
[ 8, 9, 10, 11 ]]
Концептуально говоря, что я хочу сделать это:
For each row:
Transpose the row
Multiply the transposed row by a transformation matrix
Transpose the result
Store the result in the original ndarray, overwriting the original row data
У меня есть чрезвычайно медленно, перебором метод, который функционально достигает этого:
import numpy as np
transform_matrix = np.matrix(/* 4x4 matrix setup clipped for brevity */)
for i, row in enumerate(data):
tr = row.reshape((4, 1))
new_row = np.dot(transform_matrix, tr)
data[i] = new_row.reshape((1, 4))
Однако это похоже на операцию, которую NumPy следует делать хорошо Ith. Я предполагаю, что - как кто-то новый для NumPy - я просто пропустил что-то фундаментальное в документации. Любые указатели?
Обратите внимание, что если быстрее создать новый ndarray, а не редактировать его на месте, это может работать и для того, что я делаю; скорость операции является основной задачей.
срез избыточен здесь, я думаю, – alko
Отлично! Благодарим вас за то, что вы объяснили это. Это было очень полезно. – user3089880