numpy - противоположность array.sum (вычитание?) - PullRequest
0 голосов
/ 23 марта 2019

Мне было интересно, есть ли метод, который может вычитать значения?Что-то похожее на sum

для примеров

> np.array([[10, 2], [1, 2]]).sum() 
15
" imaginary method "
> np.array([[10, 2], [1, 2]]).sub() 
6

# axis = 1
> np.array([[10, 2], [1, 2]]).sum(axis=1)
array([12,  3])
" imaginary method "
> np.array([[10, 2], [1, 2]]).sum(axis=1)
array([8,  -1])

# axis = 0
> np.array([[10, 2], [1, 2]]).sum(axis=0)
array([11,  4])
"imaginary"
> np.array([[10, 2], [1, 2]]).sub(axis=0)
array([9,  0])

Я расстроен, я не могу найти что-либо в документах (как-то непростые документы не так просто использовать, если вы не знаете, чтоВы ищете).

спасибо.

Ответы [ 2 ]

2 голосов
/ 23 марта 2019

Разница, эквивалентная np.sum(), равна np.diff()

Документы

0 голосов
/ 23 марта 2019

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]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...