NumPy基础:通用函数

通用函数,也可以称为ufunc,是一种在ndarray数据中进行逐元素操作的函数。某些简单函数接收一个或多个标量数值,并产生一个或多个标量结果,通用函数就是对这些简单函数的向量化封装。
有很多ufunc是简单的逐元素转换,比如sqrt或exp函数:

import numpy as np
arr = np.arange(10)
print(arr)
----------------------------------------------------
[0 1 2 3 4 5 6 7 8 9]
print(np.sqrt(arr))
----------------------------------------------------
[0.         1.         1.41421356 1.73205081 2.         2.23606798
 2.44948974 2.64575131 2.82842712 3.        ]
print(np.exp(arr))
----------------------------------------------------
[1.00000000e+00 2.71828183e+00 7.38905610e+00 2.00855369e+01
 5.45981500e+01 1.48413159e+02 4.03428793e+02 1.09663316e+03
 2.98095799e+03 8.10308393e+03]

这些就是所谓的一元通用函数。还有一些通用函数,比如add或maximum则则会接收两个数组并返回一个数组作为结果,因此称为二元通用函数:

x = np.random.randn(8)
y = np.random.randn(8)
print(x)
----------------------------------------------------
[1.01284295 0.51008843 0.13170168 0.29898903 0.52574663 1.37900118
 0.56520683 0.73509518]
print(y)
----------------------------------------------------
[ 1.06017429 -0.18228358 -0.70774448  1.82603961 -0.62889984 -0.48199032
 -2.47668062  0.65314373]
----------------------------------------------------
print(np.maximum(x,y))
[1.06017429 0.51008843 0.13170168 1.82603961 0.52574663 1.37900118
 0.56520683 0.73509518]

这里,numpy.maximum逐个元素地将x和y中元素的最大值给计算出来。
也有一些通用函数返回多个数组。比如modf,是python内建函数divmod的向量化版本。它返回一个浮点值数组的小数部分和整数部分:

arr = np.random.rand(7) * 5
print(arr)
----------------------------------------------------
[3.74045832 4.83364    2.70811033 4.99247033 3.82438603 4.54268595
 1.00967246]
remainder,whole_part = np.modf(arr)
print(remainder)
----------------------------------------------------
[0.74045832 0.83364    0.70811033 0.99247033 0.82438603 0.54268595
 0.00967246]
print(whole_part)
----------------------------------------------------
[3. 4. 2. 4. 3. 4. 1.]

表1-1:一元通用函数

函数名 描述
abs、fabs 逐元素地计算整数、浮点数或复数的值
square 计算每个元素的平方
sign 计算每个元素的符号值:1(正数)、0(0)、-1(负数)
ceil 计算大于等于给定数值的最小整数
floor 计算小于等于给定数值的最大整数
rint 将元素保留到整数位,并保持dtype
modf f分别将数组的小数部分和整数部分按数组形式返回
isnan 返回数组中的元素是否是一个NaN,形式为布尔值数组
log、log10、log2、log1p 分别对应:自然对数为底,对数10为底,对数2为底,log(1+x)

表1-2:二元通用函数

函数名 描述
add 将数组的对应元素相加
subtract 在第二个数组中,将第一个数组中包含的元素去除
multiply 将数组的对应元素相乘
divide,floor_divide 除或整除(放弃余数)
power 将第二个数组的元素作为第一个数组对应元素的幂次方
maximum,fmax 逐个元素计算最大值,fmax忽略NaN
minimum,fmin 逐个元素计算最小值,fmin忽略NaN
mod 即求除法的余数

猜你喜欢

转载自blog.csdn.net/weixin_43303087/article/details/84242815