np.sum
- np.add.reduce
:
In [87]: np.add.reduce(arr, axis=0)
Out[87]: array([11, 4])
In [88]: np.add.reduce(arr, axis=1)
Out[88]: array([12, 3])
Существует также subtract
ufunc
:
In [93]: np.subtract.reduce(arr, axis=0)
Out[93]: array([9, 0])
In [94]: np.subtract.reduce(arr, axis=1)
Out[94]: array([ 8, -1])
np.diff
делает вычитание нарезки:
In [97]: np.subtract(arr[:-1,:], arr[1:,:])
Out[97]: array([[9, 0]])
In [98]: np.subtract(arr[:,:-1], arr[:,1:])
Out[98]:
array([[ 8],
[-1]])
Для двух элементов diff
и subtract.reduce
сделать то же самое. Что должно произойти, если у вас более 2 строк или столбцов?
In [109]: arr = np.array([[10, 2, 3], [1, 2, 4], [0, 1, 2]])
In [110]: arr
Out[110]:
array([[10, 2, 3],
[ 1, 2, 4],
[ 0, 1, 2]])
diff
выполняет парное вычитание, строка 0 из 1, строка 1 из 2:
In [111]: np.diff(arr, axis=0)
Out[111]:
array([[-9, 0, 1],
[-1, -1, -2]])
subtract.reduce
делает кумулятивный результат, за которым проще следовать с альтернативой accumulate
:
In [112]: np.subtract.reduce(arr, axis=0)
Out[112]: array([ 9, -1, -3])
In [113]: np.subtract.accumulate(arr, axis=0)
Out[113]:
array([[10, 2, 3],
[ 9, 0, -1],
[ 9, -1, -3]])