科学计算库:Numpy
1. Numpy概述
-
核心特点
-
提供高性能多维数组对象
ndarray
,支持向量化运算。 -
底层用C实现,避免Python循环的性能瓶颈。
-
集成数学函数、线性代数、随机数生成等工具。
-
-
应用场景
科学计算、数据分析、机器学习等。
2. Array数组
-
定义数组
import numpy as np arr = np.array([1, 2, 3]) # 一维数组 matrix = np.array([[1, 2], [3, 4]]) # 二维数组
-
数组属性
-
arr.shape
:形状(如(3,)
或(2, 2)
)。 -
arr.dtype
:数据类型(如int32
、float64
)。 -
arr.ndim
:维度数(如 1 或 2)。
-
3. 数组结构
-
多维数组操作
三维数组示例:np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
。 -
内存特性
连续内存存储,支持快速访问。
4. 数组类型
-
指定类型
arr = np.array([1, 2, 3], dtype=np.float32) # 强制为浮点数
-
常见类型
-
整型:
int8
,int32
-
浮点型:
float16
,float64
-
布尔:
bool
,字符串:string_
-
5. 数值运算
-
向量化运算
arr = np.array([1, 2, 3]) arr + 2 # [3, 4, 5](逐元素加法) arr * arr # [1, 4, 9](逐元素乘法)
-
通用函数(ufunc)
-
np.sqrt(arr)
(平方根) -
np.exp(arr)
(指数)
-
6. 排序操作
-
排序方法
arr = np.array([3, 1, 2]) arr.sort() # 原地排序 → [1, 2, 3]
-
多维排序
np.sort(arr, axis=0) # 按列排序
7. 数组形状操作
-
改变形状
arr = np.arange(6).reshape(2, 3) # [[0, 1, 2], [3, 4, 5]]
-
拼接与展开
-
np.concatenate([arr1, arr2], axis=0)
:沿行拼接。 -
arr.flatten()
:展平为一维数组。
-
8. 数组生成函数
-
常用方法
np.zeros((2, 3)) # 全0数组 np.ones((3, 2)) # 全1数组 np.arange(0, 10, 2) # [0, 2, 4, 6, 8]
9. 常用生成函数
特殊数组
np.random.rand(2, 3) # 均匀分布随机数组
np.eye(3) # 3x3单位矩阵
10. 四则运算
-
逐元素运算
a = np.array([1, 2]) b = np.array([3, 4]) a + b # [4, 6] a * b # [3, 8]
-
矩阵乘法
a @ b.T # 矩阵乘法(等价于 `np.dot(a, b.T)`)
11. 随机模块
随机数生成
np.random.seed(42) # 固定随机种子
np.random.randint(0, 10, 5) # 5个0~9的整数
np.random.normal(0, 1, 10) # 正态分布随机数
12. 文件读写
文本文件
data = np.loadtxt("data.txt") # 读取文本
np.savetxt("output.txt", data) # 保存文本
13. 数组保存
-
二进制存储
np.save("data.npy", arr) # 保存为.npy文件 loaded_arr = np.load("data.npy") # 加载数组
-
多数组存储
np.savez("data.npz", arr1=arr1, arr2=arr2) # 保存多个数组
总结
-
高效数组操作:
ndarray
的向量化运算和内存优化。 -
灵活生成与变换:通过函数快速生成数组,支持形状调整、排序、拼接。
-
文件与随机数据:读写文本/二进制文件,生成可控随机数。
-
数学运算加速:避免Python原生循环,利用内置函数提升性能。