NumPy 函数手册:数值运算
在科学计算与数据分析中,数组中的数值往往需要进行各种数学运算,例如求绝对值、指数、对数、三角函数或向量长度等。NumPy 提供了一组高度向量化的数学函数,可以对数组中的所有元素进行批量计算,而无需使用 Python 循环。
按照功能划分,NumPy 中常用的数学运算函数通常可以分为以下几类:
(1)基本数值运算
(2)幂与指数运算
(3)对数运算
(4)三角函数与角度转换
(5)取整与数值限制
(6)逐元素最大值/最小值
(7)向量与几何计算
(8)双曲函数与反双曲函数
(9)指数与对数的数值稳定函数
(10)数值判断
(11)常用数学常量
一、基本数值运算
abs()
计算数组元素的绝对值(Absolute Value)。
numpy.abs(x)参数说明:
• x:输入数组
示例:
import numpy as np a = np.array([-3, -1, 2, -5])np.abs(a)# [3 1 2 5]说明:
numpy.abs 是 NumPy 的向量化绝对值函数,对应 Python 内置函数 abs() 的数组版本。
fabs()
计算浮点数绝对值(Floating Absolute Value)。
numpy.fabs(x)参数说明:
• x:输入数组
示例:
a = np.array([-2.5, -1.2, 3.0])np.fabs(a)# [2.5 1.2 3. ]说明:
fabs() 主要用于实数绝对值计算,返回浮点结果;若要处理复数绝对值,应使用 np.abs()。
negative()
逐元素取相反数。
numpy.negative(x)示例:
np.negative([1, -2, 3])# [-1 2 -3]square()
计算数组元素的平方(Square)。
numpy.square(x)参数说明:
• x:输入数组
示例:
a = np.array([1, 2, 3, 4]) np.square(a)# [ 1 4 9 16]sqrt()
计算数组元素的平方根(Square Root)。
numpy.sqrt(x)参数说明:
• x:输入数组
示例:
a = np.array([1, 4, 9, 16]) np.sqrt(a)# [1. 2. 3. 4.]说明:
在实数范围内,负数输入通常会得到 nan;若需要复数结果,应使用复数类型输入。
cbrt()
计算立方根(Cube Root)。
numpy.cbrt(x)参数说明:
• x:输入数组
示例 1:
np.cbrt([1, -8, 27])# [1. -2. 3.]说明:
与 sqrt() 相比,cbrt() 支持负数输入。
reciprocal()
计算每个元素的倒数。常用于数值归一化或比例计算。
numpy.reciprocal(x)参数说明:
• x:输入数组
示例:
np.reciprocal([1., 2., 4.])# [1. 0.5 0.25]说明:
当输入为整数数组时,结果通常仍按整数类型计算,小数部分会被截断,因此应特别注意数据类型。
NumPy 还提供基础算术 ufunc(add、subtract、multiply、divide),但通常直接使用运算符(+、-、*、/)更为常见。
二、幂与指数运算
power()
幂运算(Power)。
numpy.power(x1, x2)参数说明:
• x1:底数数组
• x2:指数
示例:
a = np.array([1, 2, 3]) np.power(a, 2)# [1 4 9]说明:
当底数为整数、指数为负整数时,通常需要先将底数转换为浮点类型。
exp()
指数函数(Exponential Function)。
numpy.exp(x)计算,其中 e 是自然常数(约等于 2.71828)。
示例:
np.exp([0, 1, 2])# [1. 2.71828183 7.3890561 ]三、对数运算
log()
计算自然对数(Natural Logarithm)。
numpy.log(x)自然对数指的是以 e 为底的对数。
示例:
np.log([1, np.e, np.e**2])# [0. 1. 2.]log10()
计算以 10 为底的对数(Logarithm Base 10)。
numpy.log10(x)示例:
np.log10([1, 10, 100])# [0. 1. 2.]log2()
计算以 2 为底的对数(Logarithm Base 2)。
numpy.log2(x)示例:
np.log2([1, 2, 4, 8])# [0. 1. 2. 3.]四、三角函数与角度转换
NumPy 提供常见的三角函数,用于信号处理、物理建模与工程计算。
注意:NumPy 的三角函数默认使用弧度(radian)。
1、三角函数
sin()
计算正弦值(Sine)。
numpy.sin(x)示例:
np.sin(np.pi / 2)# 1.0cos()
计算余弦值(Cosine)。
numpy.cos(x)示例:
np.cos(0)# 1.0tan()
计算正切值(Tangent)。
numpy.tan(x)示例:
np.tan(np.pi / 4)# 1.02、逆三角函数
逆三角函数用于根据函数值反求角度。返回值单位为弧度。
arcsin()
反正弦函数(Inverse Sine)。
numpy.arcsin(x)参数说明:
• x:输入数组或数值,取值范围通常为 [-1, 1]
示例:
np.arcsin(1)# 1.5707963267948966arccos()
反余弦函数(Inverse Cosine)。
numpy.arccos(x)参数说明:
• x:输入数组或数值,取值范围通常为 [-1, 1]
示例:
np.arccos([1, 0, -1])# [0. 1.57079633 3.14159265]arctan()
反正切函数(Inverse Tangent)。
numpy.arctan(x)参数说明:
• x:输入数组或数值,可以为任意实数
示例:
np.arctan(1)# 0.7853981633974483arctan2()
根据平面点坐标计算角度。
numpy.arctan2(y, x)参数说明:
• y:点的纵坐标
• x:点的横坐标
返回值:从 x 轴正方向到点 (x,y) 的极角(单位为弧度)。
示例:
y = np.array([1, 1, -1, -1])x = np.array([1, -1, -1, 1]) np.arctan2(y, x)# [ 0.78539816 2.35619449 -2.35619449 -0.78539816]3、角度与弧度转换
deg2rad() / radians()
角度转换为弧度。
numpy.deg2rad(x)numpy.radians(x)参数说明:
• x:输入数组,角度值
示例:
np.deg2rad([0, 90, 180])# [0. 1.57079633 3.14159265] np.radians(180)# 3.141592653589793rad2deg() / degrees()
弧度转换为角度。
numpy.rad2deg(x)numpy.degrees(x)参数说明:
• x:输入数组,弧度值
示例:
np.rad2deg([0, np.pi/2, np.pi])# [ 0. 90. 180.] np.degrees(np.pi/2)# 90.0五、取整与数值限制
ceil()
向上取整。
numpy.ceil(x)示例:
np.ceil([1.2, 2.8])# [2. 3.]floor()
向下取整。
numpy.floor(x)示例:
np.floor([1.2, 2.8])# [1. 2.]round() / around()
按指定小数位进行舍入。对于恰好位于中间的值,NumPy 采用“舍入到最近的偶数”(round to even)的规则。
round() 是 around() 的常用别名接口。
numpy.around(a, decimals=0)参数说明:
• a:输入数组或数值。可以是标量、列表或 NumPy 数组
• decimals:(可选)指定保留的小数位数,默认值为 0
decimals > 0:保留指定的小数位数。decimals = 0:舍入到最接近的整数;对于恰好位于中间的值,采用取最近偶数的规则。decimals < 0:在整数部分进行四舍五入。例如 decimals = -1 表示四舍五入到十位。示例 1:默认取整
np.around([1.4, 2.5, 3.5])# [1. 2. 4.]说明:3.5 按“银行家舍入”规则舍入为 4。
示例 2:保留两位小数
a = np.array([1.234, 2.567, 3.891])np.around(a, 2)# [1.23 2.57 3.89]示例 3:对整数部分取整
np.around([123, 456, 789], -2)# [100 500 800]trunc()
截断小数部分。
numpy.trunc(x)示例:
np.trunc([1.4, 2.6, 3.5])# [1. 2. 3.]说明:
该函数直接去掉小数部分,相当于朝 0 的方向取整。
clip()
将数值限制在指定区间。
numpy.clip(a, a_min, a_max)参数说明:
• a:输入数组或数值。可以是标量、列表或 NumPy 数组
• a_min:下界(最小允许值)。当数组元素小于该值时,将被替换为 a_min
• a_max:上界(最大允许值)。当数组元素大于该值时,将被替换为 a_max
示例:
np.clip([1, 5, 10], 2, 8)# [2 5 8]说明:
a_min 与 a_max 也可以是可广播的数组,从而实现按元素或按列/按行限制区间。
sign()
返回符号值。
numpy.sign(x)返回值:对实数输入,返回值通常为 -1、0 或 1,分别表示负数、零和正数。
示例:
np.sign([-3, 0, 4])# [-1 0 1]说明:
对复数输入时,sign() 的行为与实数情况不同,应参考官方文档中的复数定义。
signbit()
判断符号位(Sign Bit)。返回布尔数组,表示每个元素是否为负数。
numpy.signbit(x)参数说明:
• x:输入数组或数值
示例:
np.signbit([-1, 0, 2])# [ True False False]说明:
signbit() 判断的是“符号位”,与数值大小无关,常用于底层数值分析。
copysign()
复制符号(Copy Sign)。返回将 x1 的绝对值与 x2 的符号组合后的结果。
numpy.copysign(x1, x2)参数说明:
• x1:数值数组(绝对值来源)
• x2:符号来源数组
示例:
np.copysign([1, -2, 3], [-1, 1, -1])# [-1. 2. -3.]说明:
常用于数值变换或符号控制,例如保持方向但调整幅度。
mod()
计算取模(Modulo)。其结果与除数具有相同的符号。
numpy.mod(x1, x2)参数说明:
• x1:被除数
• x2:除数
返回值:余数。
示例 1:
np.mod(7, 3)# 1示例 2:
np.mod([5, 6, 7], 3)# [2 0 1]示例 3:
np.mod(-5, 3)# 1fmod()
计算浮点取模(Floating Modulo)。
numpy.fmod(x1, x2)参数说明:
• x1:被除数
• x2:除数
返回值:浮点余数。
示例 1:
np.fmod(7, 3)# 1说明:
mod() 与 fmod() 的主要区别在于余数符号规则不同:mod() 跟随除数符号,fmod() 跟随被除数符号。
示例 2:
np.fmod(-5, 3)# -2六、逐元素最大值/最小值
用于逐元素比较并返回结果数组或选择值,在数据处理与特征工程中非常常用。
maximum()
逐元素取最大值。
numpy.maximum(x1, x2)示例:
np.maximum([1, 5, 3], [2, 3, 4])# [2 5 4]说明:
返回两个数组逐元素比较后的较大值。
minimum()
逐元素取最小值。
numpy.minimum(x1, x2)示例:
np.minimum([1, 5, 3], [2, 3, 4])# [1 3 3]fmax()
忽略 NaN 的最大值。
numpy.fmax(x1, x2)示例:
np.fmax([1, np.nan, 3], [2, 3, np.nan])# [2. 3. 3.]说明:
若某个位置存在 NaN,则返回另一个非 NaN 值。
fmin()
忽略 NaN 的最小值。
numpy.fmin(x1, x2)示例:
np.fmin([1, np.nan, 3], [2, 3, np.nan])# [1. 3. 3.]说明:
fmin / fmax 是处理缺失值时的重要工具。
七、向量与几何计算
在机器学习与线性代数中,经常需要计算向量长度。
hypot()
计算直角三角形斜边长度。
numpy.hypot(x1, x2)示例:
np.hypot(3, 4)# 5.0说明:hypot(x, y) 等价于 sqrt(x² + y²),常用于计算二维向量的欧几里得长度。
八、双曲函数与反双曲函数
1、双曲函数
双曲函数(Hyperbolic Functions)在形式上类似三角函数,但对应的是双曲线。
sinh()
双曲正弦。
numpy.sinh(x)参数说明:
• x:输入数组或数值,表示自变量
示例 1:
np.sinh(0)# 0.0示例 2(数组计算):
np.sinh([0, 1, 2])# [0. 1.17520119 3.62686041]cosh()
双曲余弦。
numpy.cosh(x)参数说明:
• x:输入数组或数值
示例 1:
np.cosh(0)# 1.0示例 2:
np.cosh([0, 1, 2])# [1. 1.54308063 3.76219569]tanh()
双曲正切。
numpy.tanh(x)参数说明:
• x:输入数组或数值。
示例 1:
np.tanh(0)# 0.0示例 2:
np.tanh([-2, -1, 0, 1, 2])# [-0.96402758 -0.76159416 0. 0.76159416 0.96402758]说明:
tanh() 的函数值范围为:(-1,1)。随着 x 增大,函数值逐渐接近 1;随着 x 减小,函数值逐渐接近 -1。
tanh() 在机器学习中曾被广泛用作神经网络激活函数。
2、反双曲函数
反双曲函数(Inverse Hyperbolic Functions)用于根据双曲函数值反求自变量。
arcsinh()
计算反双曲正弦(Inverse Hyperbolic Sine)。
numpy.arcsinh(x)参数说明:
• x:输入数组或数值,可以为任意实数。
示例 1:
np.arcsinh(0)# 0.0示例 2:
np.arcsinh([0, 1, 2])# [0. 0.88137359 1.44363548]说明:
反双曲正弦函数在整个实数范围内都有定义。
arccosh()
计算反双曲余弦(Inverse Hyperbolic Cosine)。
numpy.arccosh(x)参数说明:
• x:输入数组或数值
示例 1:
np.arccosh(1)# 0.0示例 2:
np.arccosh([1, 2, 3])# [0. 1.3169579 1.76274717]说明:arccosh(x) 在实数范围通常要求 x >= 1。
arctanh()
计算反双曲正切(Inverse Hyperbolic Tangent)。
numpy.arctanh(x)参数说明:
• x:输入数组或数值示例 1:
np.arctanh(0)# 0.0示例 2:
np.arctanh([0, 0.5, -0.5])# [ 0. 0.54930614 -0.54930614]说明:arctanh(x) 在实数范围通常要求 |x| < 1。
九、指数与对数的数值稳定函数
在科学计算和机器学习中,有些表达式在直接计算时容易出现数值精度损失(floating-point precision loss)。
NumPy 提供了一些专门的函数,用于提高数值计算的稳定性。
log1p()
返回 ln(1+x) 的计算结果。
numpy.log1p(x)参数说明:
• x:输入数组或数值
示例 1:
np.log1p(0.001)# 0.0009995003330835331示例 2:
np.log1p([0.1, 1, 10])# [0.09531018 0.69314718 2.39789527]说明:
当 x 非常接近 0 时,log(1+x) 的直接计算可能产生精度损失。
log1p() 在内部使用更稳定的算法,因此更适合小数值计算。
expm1()
返回 e^x − 1 的计算结果。
numpy.expm1(x)参数说明:
• x:输入数组或数值
示例 1:
np.expm1(0.001)# 0.0010005001667083417示例 2:
np.expm1([0, 1, 2])# [0. 1.71828183 6.3890561 ]说明:
当 x 接近 0 时,直接计算 exp(x) - 1 可能会产生精度误差。
expm1() 使用数值稳定算法,可以提高计算精度。
十、数值判断
用于判断数组元素的数值状态,在数据清洗与异常检测中非常重要。
isfinite()
判断是否为有限数(Finite Number)。返回布尔数组,表示元素是否既不是 inf 也不是 nan。
numpy.isfinite(x)示例:
np.isfinite([1, np.inf, np.nan])# [ True False False]isinf()
判断是否为无穷值。
numpy.isinf(x)示例:
np.isinf([1, np.inf, -np.inf])# [False True True]isnan()
判断是否为 NaN。
numpy.isnan(x)示例:
np.isnan([1, np.nan, 2])# [False True False]说明:
NaN 与任何值(包括自身)比较均为 False,因此必须使用 isnan() 进行判断。
十一、常用数学常量
NumPy 提供了一组常用数学常量,可直接参与数组运算。
pi
圆周率常量。数值约为 3.141592653589793。
numpy.pi示例:
np.sin(np.pi / 2)# 1.0e
自然常数。数值约为 2.718281828459045。
numpy.e示例:
np.log(np.e)# 1.0inf
正无穷。
numpy.inf示例:
np.array([1, 2, np.inf])# [ 1. 2. inf]nan
非数值(Not a Number)。
numpy.nan说明:通常用于表示未定义的浮点结果,也常在数值计算中充当缺失值标记。
📘 小结
NumPy 提供了丰富的向量化数值运算函数,涵盖基本算术、幂与指数、对数、三角与双曲函数、取整与限制、逐元素最大最小值、向量计算、数值稳定函数以及数值判断等多个方面。不同函数在定义域、返回类型与数值稳定性上存在差异,实际使用时应结合数据类型、输入范围与计算目标合理选择。
“点赞有美意,赞赏是鼓励”
