ufunc 与 Numpy 中的基本算术运算符
ufunc Vs basic arithmetic operators in Numpy
我看到通用函数 (ufunc) 用于执行元素级数组操作。
arr = np.arange(5)
arr2 = np.arange(5,10)
np.add(arr,arr2)
这段代码与arr + arr2
类似。既然如此,我们为什么要使用 ufunc?
因为它是一个具有许多功能的函数,简单的添加表达式无法为您提供这些功能。您可以根据您在某些情况下的预期行为覆盖 ufunc objects,并从其所有功能中受益。
你可以通过查看函数的 header:
来了解
numpy.add(x1, x2, /, out=None, *, where=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 objects.
上执行 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
我看到通用函数 (ufunc) 用于执行元素级数组操作。
arr = np.arange(5)
arr2 = np.arange(5,10)
np.add(arr,arr2)
这段代码与arr + arr2
类似。既然如此,我们为什么要使用 ufunc?
因为它是一个具有许多功能的函数,简单的添加表达式无法为您提供这些功能。您可以根据您在某些情况下的预期行为覆盖 ufunc objects,并从其所有功能中受益。
你可以通过查看函数的 header:
来了解numpy.add(x1, x2, /, out=None, *, where=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 objects.
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