Numpy 二元函數
通用函數中,接受兩個標量值、并產生一個或多個標量值的情況,這里稱之為二元函數。
常用的二元函數,包括算術運算、比較級運算、求余數等。
1. 常用算術運算
1.1 四則運算
當對兩個數組進行四則運算,可以通過運算函數完成,需要注意的是數組必須具有相同的形狀或符合數組廣播規則。
四則運算具體函數說明如下:
函數 | 說明 |
---|---|
add | 加法運算 |
subtract | 減法運算,從第一個數組中減去第二個數組 |
multiply | 數組元素相乘 |
divide | 除法運算 |
案例
創建 2 個數組:
arr0 = np.array([1,2,3,4,5])
arr1 = np.array([10,20,30,40,50])
觀察四則運算的調用方法和運算結果。
數組相加:
np.add(arr0, arr1)
out:
array([11, 22, 33, 44, 55])
數組相減:
np.subtract(arr0, arr1)
out:
array([ -9, -18, -27, -36, -45])
數組相乘:
np.multiply(arr0, arr1)
out:
array([ 10, 40, 90, 160, 250])
數組相除:
np.divide(arr0, arr1)
out:
array([0.1, 0.1, 0.1, 0.1, 0.1])
1.2 求冪運算
numpy.power() 函數將第一個輸入數組中的元素作為底數,計算它與第二個輸入數組中相應元素的冪。
案例
對 arr0 數組的元素,求三次方:
np.power(arr0, 3)
out:
array([ 1, 8, 27, 64, 125], dtype=int32)
當輸入的第二個參數是數組類型時,power 函數會對第一個數組中的元素(記為A),根據第二個數組中對應的元素 B,計算 AB:
np.power(arr1, arr0)
out:
array([ 10, 400, 27000, 2560000, 312500000], dtype=int32)
1.3 求余數
numpy.mod() 函數,是元素級的求余數計算,傳參方式跟 power 函數類似。
案例
對 arr0 數組的元素,求 2 的余數:
np.mod(arr0, 2)
out:
array([1, 0, 1, 0, 1], dtype=int32)
類似地,對 arr1 數組中的元素,分別對 arr0 數組的元素,求余數:
np.mod(arr1, arr0)
out:
array([0, 0, 0, 0, 0], dtype=int32)
2. 比較運算
2.1 最大最小值計算
函數 | 說明 |
---|---|
maximum、fmax | 元素級的最大值計算,fmax將忽略NaN |
minimum、fmin | 元素級的最小值計算,fmin將忽略NaN |
案例
計算 arr0 和 arr1 之間的最大值:
np.maximum(arr0, arr1)
out:
array([10, 20, 30, 40, 50])
計算 arr0 和 arr1 之間的最小值:
np.minimum(arr0, arr1)
out:
array([1, 2, 3, 4, 5])
需要注意的是,如果數組中間存在空值,需要用 fmax 或 fmin 函數,否則會報 ValueError 的錯誤。
2.2 比較運算
執行元素級的比較運算,最終產生一個布爾型數組。常用的比較運算有:
函數 | 說明 |
---|---|
greater、greater_equal | 相當于運算符:>、≥ |
less、less_equal | 相當于運算符:<、≤ |
equal、not_equal | 相當于運算符:==、!= |
案例
比較級可以使用在數組與標量之間:
np.greater(arr0, 3)
out:
array([False, False, False, True, True])
比較級也可以使用在兩個數組之間:
np.not_equal(arr0, arr1)
out:
array([ True, True, True, True, True])
3. 小結
本節介紹了常用的二元函數,例如:算術運算、比較級運算等。需要注意的是,二元函數不僅僅可以接受兩個數組,在廣播規則生效的情況下,也可以同時傳入數組和標量。