内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
假设我有一个numpy数组:
data = np.array([[1,1,1],[2,2,2],[3,3,3]])
我有一个对应的"vector:"
vector = np.array([1,2,3])
我该怎么做data
沿着每一行减去或除以,结果是:
sub_result = [[0,0,0], [0,0,0], [0,0,0]] div_result = [[1,1,1], [1,1,1], [1,1,1]]
如何对二维数组的每一行执行与每一行对应的一维标量数组的操作?
你只需要用None
(或另一种选择)np.newaxis
)与广播相结合:
In [6]: data - vector[:,None] Out[6]: array([[0, 0, 0], [0, 0, 0], [0, 0, 0]]) In [7]: data / vector[:,None] Out[7]: array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])
用None
或与np.newaxes
是个很好的方法。另一种选择是使用转置和广播,如
(data.T - vector).T
和
(data.T / vector).T
对于高维数组,您可能需要使用swapaxes
NumPy阵列或NumPy方法rollaxis函数
。