当前位置: 首页 > news >正文

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.0

cos()

计算余弦值(Cosine)。

numpy.cos(x)

示例:

np.cos(0)# 1.0

tan()

计算正切值(Tangent)。

numpy.tan(x)

示例:

np.tan(np.pi / 4)# 1.0

2、逆三角函数

逆三角函数用于根据函数值反求角度。返回值单位为弧度。

arcsin()

反正弦函数(Inverse Sine)。

numpy.arcsin(x)

参数说明:

• x:输入数组或数值,取值范围通常为 [-1, 1]

示例:

np.arcsin(1)# 1.5707963267948966

arccos()

反余弦函数(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.7853981633974483

arctan2()

根据平面点坐标计算角度。

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.141592653589793

rad2deg() / 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)# 1

fmod()

计算浮点取模(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.0

e

自然常数。数值约为 2.718281828459045。

numpy.e

示例:

np.log(np.e)# 1.0

inf

正无穷。

numpy.inf

示例:

np.array([1, 2, np.inf])# [ 1. 2. inf]

nan

非数值(Not a Number)。

numpy.nan

说明:通常用于表示未定义的浮点结果,也常在数值计算中充当缺失值标记。

📘 小结

NumPy 提供了丰富的向量化数值运算函数,涵盖基本算术、幂与指数、对数、三角与双曲函数、取整与限制、逐元素最大最小值、向量计算、数值稳定函数以及数值判断等多个方面。不同函数在定义域、返回类型与数值稳定性上存在差异,实际使用时应结合数据类型、输入范围与计算目标合理选择。

“点赞有美意,赞赏是鼓励”

http://www.cnnetsun.cn/news/1438131.html

相关文章:

  • 【每周分享】关于BOOSTXL-3PHGANINV(TI的 三相逆变器模块)的经验分享
  • 专供普通人学的网络安全入门路线,从0到1指南,收藏这篇就够了!
  • OpenClaw - Personal AI Assistant (个人 AI 助理)
  • MLX90632红外温度传感器Arduino驱动库详解
  • MaaAssistantArknights 实战指南:从问题诊断到性能调优
  • 大数据领域分布式存储的分布式NFT数据管理
  • 造相-Z-Image游戏开发:2D素材批量生成与风格统一控制
  • 大疆Pilot上云直播实战:如何用SRS实现RTMP转WebRTC低延迟推流
  • Granite TimeSeries FlowState R1在交通流量预测中的惊艳效果:城市路口案例
  • 如何用Neorg构建合成生物学数据共享平台:终极架构设计指南
  • 【异常】Maven私有仓库依赖解析失败排查指南 [ERROR] Failed to execute goal on project example-thirdparty-app:
  • 如何通过WebAssembly优化xiaozhi-esp32-server前端性能:5个关键技巧
  • FPGA新手避坑指南:用状态机和移位寄存器两种方法实现序列检测器(附Verilog代码)
  • Esparto v3.3:ESP8266同步任务框架深度解析
  • GoCD与Vercel Analytics集成:前端性能监控自动化终极指南
  • 程序员到中年40岁了,转行搞网安还能吃到肉吗?
  • DAMO-YOLO工业落地:SMT贴片机AOI检测替代方案的成本效益分析
  • 2026大模型零基础入门到精通:全套学习路线图+实战项目,小白也能轻松掌握!
  • Python3.8镜像体验:3步搭建AI学习与Web开发环境
  • ESP32安全启动终极指南:基于xiaozhi-esp32-server实现链式验证的完整教程
  • 从top到htop:系统监控工具的进化与实战指南
  • Kettle在Windows环境下的典型故障排查与优化指南
  • STM32开发三层次:寄存器、标准库与HAL库选型指南
  • 深入ViTCE模块:OSTrack如何用‘候选消除’在单目标跟踪中又快又准?
  • 避开OpenAI API的坑:为什么你的VPN能用但代码连不上?(附区域检测工具)
  • kkFileView 3.6.0及以下版本任意文件读取漏洞复现与修复指南
  • 揭秘书匠策AI:论文写作路上的数据分析魔法师
  • 终极指南:如何利用JimuReport实现高效数据归档与查询优化
  • Guohua Diffusion 生成艺术展:探索人像、风景与抽象概念的视觉边界
  • 告别手动筛选!用Python+Word2vec自动扩充你的中文敏感词库(附完整代码)