假设我有一个 numpy 数组:
data = np.array([[1,1,1],[2,2,2],[3,3,3]])
我有一个相应的“向量:”
vector = np.array([1,2,3])
我该如何操作data沿着每一行进行减法或除法,结果是:
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) 与广播结合:
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]])