NumPy ufuncs
什么是 ufuncs?
ufuncs 指的是“通用函數”(Universal Functions),它們是對 ndarray 對象進行操作的 NumPy 函數。
為什么要使用 ufuncs?
ufunc 用于在 NumPy 中實現矢量化,這比迭代元素要快得多。
它們還提供廣播和其他方法,例如減少、累加等,它們對計算非常有幫助。
ufuncs 還接受其他參數,比如:
where
布爾值數組或條件,用于定義應在何處進行操作。
dtype
定義元素的返回類型。
out
返回值應被復制到的輸出數組。
什么是向量化?
將迭代語句轉換為基于向量的操作稱為向量化。
由于現代 CPU 已針對此類操作進行了優化,因此速度更快。
對兩個列表的元素進行相加:
list 1: [1, 2, 3, 4]
list 2: [4, 5, 6, 7]
一種方法是遍歷兩個列表,然后對每個元素求和。
實例
如果沒有 ufunc,我們可以使用 Python 的內置 zip()
方法:
x = [1, 2, 3, 4] y = [4, 5, 6, 7] z = [] for i, j in zip(x, y): z.append(i + j) print(z)
對此,NumPy 有一個 ufunc,名為 add(x, y)
,它會輸出相同的結果。
實例
通過 ufunc,我們可以使用 add()
函數:
import numpy as np x = [1, 2, 3, 4] y = [4, 5, 6, 7] z = np.add(x, y) print(z)