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