我看到通用函数(ufunc)用于执行按元素排列的数组操作。
arr = np.arange(5)
arr2 = np.arange(5,10)
np.add(arr,arr2)
这段代码类似于arr + arr2
。在那种情况下,为什么要使用ufunc?
答案 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 + b
或a
是一个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