NumPy 中文教程

第一部分:基础认知与环境准备
第 1 章 全面认识 NumPy
第 2 章 开发环境搭建与验证
第二部分:核心对象 ——ndarray 数组
第 3 章 ndarray 数组基础
第 4 章 数组的形状与维度操作
第四部分:高级应用与数据处理
第 8 章 数组的排序、查找与去重
第 9 章 缺失值与异常值处理
第 10 章 随机数生成与抽样
第 11 章 文件读写与数据交互
第五部分:实战场景与落地应用
第 12 章 数值计算实战
第 13 章 数据分析实战
第六部分:优化进阶与问题解决
第 14 章 NumPy 性能优化
第 15 章 NumPy 进阶扩展
第 16 章 常见问题与解决方案

6.2 数学函数运算

NumPy数学函数运算教程:从基础三角函数到高级向量化操作

NumPy 中文教程

本教程详细讲解NumPy中的数学函数运算,包括sin、cos、tan等三角函数,arcsin、arccos等反三角函数,exp、log等指数对数函数,round、floor等舍入截断函数,以及如何使用np.vectorize()自定义向量化函数。适合Python和NumPy初学者快速上手。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

NumPy数学函数运算全攻略:新手友好教程

引言

NumPy是Python中用于科学计算的核心库,提供了高效的数组操作和数学函数。数学函数运算是数据分析、机器学习等领域的基石。本教程将详细介绍NumPy中的关键数学函数,从基础三角函数到高级向量化函数,帮助您轻松掌握。

1. 三角函数与反三角函数

三角函数和反三角函数在信号处理、物理模拟等领域广泛应用。NumPy提供了一系列函数来处理这些操作。

1.1 基本三角函数

NumPy中的三角函数使用弧度制输入。常见函数包括:

  • np.sin(x):计算正弦值
  • np.cos(x):计算余弦值
  • np.tan(x):计算正切值

示例代码:

import numpy as np
# 创建一个数组
angles = np.array([0, np.pi/4, np.pi/2])
print("Sin values:", np.sin(angles))
print("Cos values:", np.cos(angles))
print("Tan values:", np.tan(angles))

这些函数可以直接应用于NumPy数组,实现向量化计算,提高效率。

1.2 反三角函数

反三角函数返回弧度值,例如:

  • np.arcsin(x):计算反正弦,输入范围[-1, 1]
  • np.arccos(x):计算反余弦,输入范围[-1, 1]
  • np.arctan(x):计算反正切,返回[-π/2, π/2]

示例代码:

values = np.array([0.5, 0.0, -0.5])
print("Arcsine:", np.arcsin(values))
print("Arccosine:", np.arccos(values))
print("Arctangent:", np.arctan(values))

反三角函数常用于角度计算和几何问题。

2. 指数与对数函数

指数和对数函数在金融建模、数据压缩等领域常见。

2.1 指数函数

  • np.exp(x):计算e的x次幂,其中e是自然对数的底数(约2.718)。

示例:

x = np.array([0, 1, 2])
print("Exponential:", np.exp(x))  # 输出: [1. 2.718... 7.389...]

2.2 对数函数

NumPy提供多种对数函数:

  • np.log(x):计算自然对数(以e为底)
  • np.log10(x):计算常用对数(以10为底)
  • np.log2(x):计算以2为底的对数

示例代码:

values = np.array([1, 10, 100])
print("Natural log:", np.log(values))
print("Base-10 log:", np.log10(values))
print("Base-2 log:", np.log2(values))

注意:输入值必须为正数,否则可能引发错误。

3. 舍入与截断函数

舍入函数用于数值处理,在数据清洗和精度控制中很重要。

3.1 舍入函数

  • np.round(x, decimals=n):四舍五入到指定小数位数,n默认为0。
  • np.floor(x):向下取整,返回不大于x的最大整数。
  • np.ceil(x):向上取整,返回不小于x的最小整数。

示例:

arr = np.array([1.234, 2.567, -3.789])
print("Rounded (2 decimals):", np.round(arr, 2))
print("Floor:", np.floor(arr))
print("Ceil:", np.ceil(arr))

3.2 截断函数

  • np.trunc(x):截断小数部分,向零方向取整。

示例:

print("Truncate:", np.trunc(arr))  # 输出: [1. 2. -3.]

与floor和ceil不同,trunc总是向零取整,无论正负。

4. 自定义向量化函数

NumPy的核心优势是向量化操作,但有时需要自定义函数。使用np.vectorize()可以将普通Python函数转换为向量化版本。

4.1 使用np.vectorize()

np.vectorize()包装一个函数,使其能接受NumPy数组作为输入,并逐元素应用。

示例:定义一个自定义函数并向量化。

def custom_func(x):
    return x**2 + np.sin(x)  # 计算平方加正弦

vectorized_func = np.vectorize(custom_func)
arr = np.array([0, 1, 2])
print("Vectorized result:", vectorized_func(arr))

这避免了Python循环,提高了效率,尤其对大数组。

4.2 注意事项

  • np.vectorize()本质上是Python级循环,可能不如原生NumPy函数快。但在兼容性上更灵活。
  • 支持多参数函数,例如:np.vectorize(func, otypes=[float])指定输出类型。
  • 优先使用NumPy内置函数,若无法满足再考虑np.vectorize()

结论

NumPy的数学函数库强大且高效,覆盖了从基础三角函数到高级向量化操作的方方面面。通过本教程,您应该能熟练使用这些函数进行数据计算。实践是掌握的关键,尝试结合实际数据集练习这些函数。

进一步学习,可探索NumPy的统计函数或线性代数模块。希望本教程助您在NumPy旅程中顺利起步!


练习提示: 尝试创建一个数组,应用所有讨论的函数,并比较结果。例如,使用随机数生成数组,计算其指数、对数,并进行舍入处理。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包