Потому что это функция, которая поставляется с множеством функций, которые простое выражение add не предоставит вам.Вы можете переопределить объекты ufunc, основываясь на вашем ожидаемом поведении в определенных ситуациях, и при этом воспользоваться всеми его функциональными возможностями.
Это можно увидеть, просто взглянув на заголовок функции:
numpy.add (x1, x2, /, out = None, *, где = True, casting = 'same_kind ', order =' K ', dtype = None, subok = True [, signature, extobj])
Подробнее в документе:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.add.html
И:
https://docs.scipy.org/doc/numpy/reference/ufuncs.html#ufuncs-kwargs\
Также обратите внимание, что всякий раз, когда вы делаете a + b
, если a
или b
- ndarray, add(a, b)
вызывается внутренне numpy.Таким образом, нет разницы, когда оба аргумента являются ndarray.
Еще одна хорошая функциональность, которую предоставляют ufunc
, заключается в том, что вы можете выполнять множественные функции непосредственно над объектами python.
In [20]: np.add([2, 3, 4], 4)
Out[20]: array([6, 7, 8])
Это еслисделав сумму в Python, вы получите ошибку TypeError:
In [21]: [2, 3, 4] + 4
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-0a8f512c0d3a> in <module>()
----> 1 [2, 3, 4] + 4
TypeError: can only concatenate list (not "int") to list