ufunc与Numpy中的基本算术运算符

时间:2018-12-04 09:20:41

标签: python python-3.x numpy numpy-ufunc

我看到通用函数(ufunc)用于执行按元素排列的数组操作。

 arr = np.arange(5)
 arr2 = np.arange(5,10)
 np.add(arr,arr2)

这段代码类似于arr + arr2。在那种情况下,为什么要使用ufunc?

1 个答案:

答案 0 :(得分:2)

因为它是一个函数,具有许多简单的添加表达式无法提供的功能。您可以根据某些情况下的预期行为来覆盖ufunc对象,但仍可以从其所有功能中受益。

只需查看函数的标题即可看到这一点:

  

numpy.add(x1,x2,/,out = None,*,where = True,cast ='same_kind',order ='K',dtype = None,subok = True [,signature,extobj])< / p>

在文档中阅读更多内容:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.add.html

并且:

https://docs.scipy.org/doc/numpy/reference/ufuncs.html#ufuncs-kwargs \

还请注意,如果a + ba是一个ndarray,则每次执行b时,numpy都会在内部调用add(a, b)。因此,两个参数都为ndarray时没有区别。

ufunc提供的另一个好的功能是您可以直接在python对象上执行numpy功能。

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