NumPy通用函数
在NumPy中,提供了诸如“sin”、“cos”、“exp”等常见的数学函数,这些函数叫做通用函数(ufunc)。通用函数(ufunc)是一种针对ndarray中的数据执行元素级运算的函数,函数返回的是一个新的数组。通常情况下,我们将ufunc中接收一个数组参数的函数称为一元通用函数,而接受两个数组参数的则称为二元通用函数。表1和表2列举了一些常见的一元和二元通用函数。
表1 常见一元通用函数
函数 | 描述 |
---|---|
abs、fabs | 计算整数、浮点数或复数的绝对值 |
sqrt | 计算各元素的平方根 |
square | 计算各元素的平方 |
exp | 计算各元素的指数ex |
log、log10、log2、log1p | 分别为自然对数(底数为e),底数为10的log,底数为2的log,log(1+x) |
sign | 计算各元素的正负号:1(正数)、0(零)、-1(负数) |
ceil | 计算各元素的ceilling值,即大于或者等于该值的最小整数 |
floor | 计算各元素的floor值,即小于等于该值的最大整数 |
rint | 将各元素四舍五入到最接近的整数 |
modf | 将数组的小数和整数部分以两个独立数组的形式返回 |
isnan | 返回一个表示“哪些值是NaN”的布尔型数组 |
isfinite、isinf | 分别返回表示“哪些元素是有穷的”或“哪些元素是无穷”的布尔型数组 |
sin、sinh、cos、cosh、tan、tanh | 普通型和双曲型三角函数 |
arcos、arccosh、arcsin | 反三角函数 |
表2 常见二元通用函数
函数 | 描述 |
---|---|
add | 将数组中对应的元素相加 |
subtract | 从第一个数组中减去第二个数组中的元素 |
multiply | 数组元素相乘 |
divide,floor_divide | 除法或向下整除法(舍去余数) |
maximum、fmax | 元素级的最大值计算 |
minimum、fmin | 元素级的最小值计算 |
mod | 元素级的求模计算 |
copysign | 将第二个数组中的值的符号赋值给第一个数组中的值 |
greater、greater_equal、less、less_equal、equal、not_equal、 logical_and、logical_or、logical_xor | 执行元素级的比较运算,最终产生布尔型数组,相当于运算符>、≥、<、≤、==、!= |
接下来,通过一些示例代码来演示上述部分函数的用法。有关一元通用函数的示例代码如下。
In [88]: arr = np.array([4, 9, 16])
# 计算数组元素的平方根
In [89]: np.sqrt(arr)
Out[89]: array([2., 3., 4.])
# 计算数组元素的绝对值
In [90]: np.abs(arr)
Out[90]: array([ 4, 9, 16])
# 计算数组元素的平方
In [91]: np.square(arr)
Out[91]: array([ 16, 81, 256])
有关二元通用函数的示例代码如下。
In [92]: x = np.array([12, 9, 13, 15])
In [93]: y = np.array([11, 10, 4, 8])
# 计算两个数组的和
In [94]: np.add(x, y)
Out[94]: array([23, 19, 17, 23])
# 计算两个数组的乘积
In [95]: np.multiply(x, y)
Out[95]: array([132, 90, 52, 120])
# 两个数组元素级最大值的比较
In [96]: np.maximum(x, y)
Out[96]: array([12, 10, 13, 15])
# 执行元素级的比较操作
In [97]: np.greater(x, y)
Out[97]: array([ True, False, True, True])