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. 小结
本节介绍了常用的二元函数,例如:算术运算、比较级运算等。需要注意的是,二元函数不仅仅可以接受两个数组,在广播规则生效的情况下,也可以同时传入数组和标量。