假设我有一个2d的NumPy ndarray,如下:
[[ 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擅长处理的操作。我认为作为一个新手,在文档中可能会忽略一些基本的东西。有什么指点吗?
请注意,如果创建新的ndarray比原地编辑更快,那么对于我正在做的事情来说,这也是可行的;操作的速度是主要关注点。