- Python 学习路径:从零到精通
- Python 环境搭建
- Python 基础语法
- Python 数据结构
- Python 字符串操作
- Python 文件读写
- Python 函数进阶
- Python 面向对象编程(OOP)
- Python 异常处理
- Python 模块与包
- Python 迭代器与生成器
- Python 装饰器
- Flask 基础与入门
- Django 框架基础
- Python RESTful API 开发
- Python Web 表单与用户认证
- Python 数据的操作
- SQLAlchemy ORM 的使用
- Pandas 数据分析基础
- Numpy 数值计算
- 数据可视化(Matplotlib, Seaborn)
- 数据导入导出(CSV, Excel, JSON)
- 使用 requests 库进行 HTTP 请求
- 使用 BeautifulSoup 或 Scrapy 进行网页解析
- 线程与进程的概念
- 使用 threading 模块实现多线程
- 使用 multiprocessing 模块实现多进程
- GIL(全局解释器锁)的概念与影响
- Python 自动化脚本
- Python 常用设计模式
- Python 性能分析工具
- Python 内存管理与优化
- 并行与异步编程(asyncio, concurrent.futures)
- 测试驱动开发(TDD)
- WebSocket 实时通信
- Python GraphQL API 开发
- 前后端分离与前端框架(Vue.js, React)的集成
- 使用 Docker 容器化部署 Python 应用
- CI/CD 流程的自动化(GitHub Actions, Jenkins)
- Scikit-learn, TensorFlow 或 PyTorch 的基础知识
- 数据预处理与特征工程
- 构建与训练模型
- 模型评估与调优
- Hadoop 与 Spark 基础
- 使用 PySpark 进行大数据处理
- 分布式计算与数据流处理
- 基本的加密与解密技术
- 简单的网络安全工具(如端口扫描、漏洞检测)
- Web 安全与常见攻击防御(如 SQL 注入、XSS)
- 项目的协作流程
- 撰写高质量的代码与文档
Numpy 数值计算
class NumPyNumPy 是 Python 中用于科学计算的基础库之一,提供了高效的多维数组对象(ndarray
)以及一系列用于操作这些数组的函数。它是许多其他科学计算库(如 Pandas、SciPy、TensorFlow)的基础。以下是 NumPy 的基础知识,包括数组的创建、操作、索引、切片、计算等内容。
1. 安装 NumPy
首先,你需要安装 NumPy。如果你还没有安装,可以通过以下命令进行安装:
pip install numpy
2. NumPy 数组的创建
NumPy 提供了多种方法来创建数组,包括从列表、元组创建,从文件读取数据创建,以及使用内置函数创建数组。
2.1 从列表或元组创建数组
import numpy as np
# 从列表创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)
# 从元组创建二维数组
arr2 = np.array([(1, 2, 3), (4, 5, 6)])
print(arr2)
2.2 使用内置函数创建数组
NumPy 提供了许多函数来创建特定形状和内容的数组。
# 创建全零数组
arr_zeros = np.zeros((3, 3))
print(arr_zeros)
# 创建全一数组
arr_ones = np.ones((2, 4))
print(arr_ones)
# 创建单位矩阵(对角线为 1 的方阵)
arr_eye = np.eye(3)
print(arr_eye)
# 创建等差数组
arr_arange = np.arange(0, 10, 2)
print(arr_arange)
# 创建线性等分数组
arr_linspace = np.linspace(0, 1, 5)
print(arr_linspace)
# 创建随机数组
arr_random = np.random.rand(3, 3)
print(arr_random)
3. NumPy 数组的基本操作
NumPy 数组的基本操作包括数组的形状变换、元素访问、切片和布尔索引。
3.1 数组的形状与变换
# 查看数组形状
print(arr2.shape)
# 改变数组形状
arr_reshaped = arr2.reshape(3, 2)
print(arr_reshaped)
# 转置数组
arr_transposed = arr2.T
print(arr_transposed)
# 展平数组
arr_flattened = arr2.flatten()
print(arr_flattened)
3.2 数组索引与切片
NumPy 数组支持与 Python 列表类似的索引和切片操作。
# 访问单个元素
print(arr1[2])
# 切片操作
print(arr1[1:4]) # 输出 [2, 3, 4]
# 多维数组索引
print(arr2[1, 2]) # 输出 6
# 多维数组切片
print(arr2[0:2, 1:3]) # 输出 [[2, 3], [5, 6]]
3.3 布尔索引
通过布尔数组进行索引可以筛选出满足条件的元素。
# 布尔条件筛选
print(arr1[arr1 > 3]) # 输出 [4, 5]
4. 数值计算与操作
NumPy 提供了丰富的数值计算功能,包括数学函数、统计函数、线性代数操作等。
4.1 数组的运算
NumPy 允许对数组进行元素级的加、减、乘、除等运算。
arr_a = np.array([1, 2, 3])
arr_b = np.array([4, 5, 6])
# 元素加法
arr_sum = arr_a + arr_b
print(arr_sum) # 输出 [5, 7, 9]
# 元素乘法
arr_prod = arr_a * arr_b
print(arr_prod) # 输出 [4, 10, 18]
# 数组与标量运算
arr_scaled = arr_a * 2
print(arr_scaled) # 输出 [2, 4, 6]
4.2 数学函数
NumPy 提供了一系列数学函数来对数组进行操作。
# 求和
arr_sum = np.sum(arr_a)
print(arr_sum) # 输出 6
# 平均值
arr_mean = np.mean(arr_a)
print(arr_mean) # 输出 2.0
# 标准差
arr_std = np.std(arr_a)
print(arr_std) # 输出 0.816
# 正弦函数
arr_sin = np.sin(arr_a)
print(arr_sin) # 输出 [0.841, 0.909, 0.141]
# 自然对数
arr_log = np.log(arr_a)
print(arr_log) # 输出 [0., 0.693, 1.099]
4.3 线性代数操作
NumPy 还支持常见的线性代数操作,如矩阵乘法、逆矩阵等。
# 矩阵乘法
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
matrix_prod = np.dot(matrix_a, matrix_b)
print(matrix_prod) # 输出 [[19, 22], [43, 50]]
# 计算逆矩阵
matrix_inv = np.linalg.inv(matrix_a)
print(matrix_inv) # 输出 [[-2. , 1. ], [ 1.5, -0.5]]
# 计算特征值和特征向量
eig_vals, eig_vecs = np.linalg.eig(matrix_a)
print(eig_vals) # 输出特征值
print(eig_vecs) # 输出特征向量
5. 文件操作
NumPy 提供了方便的函数来从文件中读取数据或将数组保存到文件中。
# 保存数组到文件
np.save('array.npy', arr_a)
# 从文件加载数组
loaded_array = np.load('array.npy')
print(loaded_array)
# 保存为文本文件
np.savetxt('array.txt', arr_a)
# 从文本文件加载数组
loaded_array_txt = np.loadtxt('array.txt')
print(loaded_array_txt)
6. 广播机制
NumPy 的广播机制允许不同形状的数组在进行算术运算时自动扩展成相同的形状。广播可以在不显式复制数据的情况下,让计算更加高效。
arr_c = np.array([1, 2, 3])
arr_d = np.array([[1], [2], [3]])
# 广播机制下的加法
result = arr_c + arr_d
print(result)
# 输出:
# [[2, 3, 4],
# [3, 4, 5],
# [4, 5, 6]]
7. 总结
NumPy 是一个功能强大的库,为数值计算和数据处理提供了高效的工具。掌握 NumPy 的基本操作、数组创建、数值计算、线性代数操作等内容,将为你进行科学计算和数据分析打下坚实的基础。在数据科学、机器学习等领域,NumPy 是一个必不可少的工具。
评论区
评论列表
{{ item.user.nickname || item.user.username }}