NumPy 函数手册:数值运算

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输入数组示例 1np.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 还提供基础算术 ufuncadd、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, decimals0)参数说明• a输入数组或数值。可以是标量、列表或 NumPy 数组• decimals可选指定保留的小数位数默认值为 0decimals 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除数返回值余数。示例 1np.mod(7, 3)# 1示例 2np.mod([5, 6, 7], 3)# [2 0 1]示例 3np.mod(-5, 3)# 1fmod()计算浮点取模Floating Modulo。numpy.fmod(x1, x2)参数说明• x1被除数• x2除数返回值浮点余数。示例 1np.fmod(7, 3)# 1说明mod() 与 fmod() 的主要区别在于余数符号规则不同mod() 跟随除数符号fmod() 跟随被除数符号。示例 2np.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输入数组或数值表示自变量示例 1np.sinh(0)# 0.0示例 2数组计算np.sinh([0, 1, 2])# [0. 1.17520119 3.62686041]cosh()双曲余弦。numpy.cosh(x)参数说明• x输入数组或数值示例 1np.cosh(0)# 1.0示例 2np.cosh([0, 1, 2])# [1. 1.54308063 3.76219569]tanh()双曲正切。numpy.tanh(x)参数说明• x输入数组或数值。示例 1np.tanh(0)# 0.0示例 2np.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输入数组或数值可以为任意实数。示例 1np.arcsinh(0)# 0.0示例 2np.arcsinh([0, 1, 2])# [0. 0.88137359 1.44363548]说明反双曲正弦函数在整个实数范围内都有定义。arccosh()计算反双曲余弦Inverse Hyperbolic Cosine。numpy.arccosh(x)参数说明• x输入数组或数值示例 1np.arccosh(1)# 0.0示例 2np.arccosh([1, 2, 3])# [0. 1.3169579 1.76274717]说明arccosh(x) 在实数范围通常要求 x 1。arctanh()计算反双曲正切Inverse Hyperbolic Tangent。numpy.arctanh(x)参数说明• x输入数组或数值示例 1np.arctanh(0)# 0.0示例 2np.arctanh([0, 0.5, -0.5])# [ 0. 0.54930614 -0.54930614]说明arctanh(x) 在实数范围通常要求 |x| 1。九、指数与对数的数值稳定函数在科学计算和机器学习中有些表达式在直接计算时容易出现数值精度损失floating-point precision loss。NumPy 提供了一些专门的函数用于提高数值计算的稳定性。log1p()返回 ln(1x) 的计算结果。numpy.log1p(x)参数说明• x输入数组或数值示例 1np.log1p(0.001)# 0.0009995003330835331示例 2np.log1p([0.1, 1, 10])# [0.09531018 0.69314718 2.39789527]说明当 x 非常接近 0 时log(1x) 的直接计算可能产生精度损失。log1p() 在内部使用更稳定的算法因此更适合小数值计算。expm1()返回 e^x − 1 的计算结果。numpy.expm1(x)参数说明• x输入数组或数值示例 1np.expm1(0.001)# 0.0010005001667083417示例 2np.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 提供了丰富的向量化数值运算函数涵盖基本算术、幂与指数、对数、三角与双曲函数、取整与限制、逐元素最大最小值、向量计算、数值稳定函数以及数值判断等多个方面。不同函数在定义域、返回类型与数值稳定性上存在差异实际使用时应结合数据类型、输入范围与计算目标合理选择。“点赞有美意赞赏是鼓励”