什么是NumPy?
NumPy(Numerical Python)是Python科学计算的核心库,提供了高性能的多维数组对象ndarray
以及丰富的数学函数库。它是Pandas、SciPy、Scikit-learn等众多数据科学库的基础,专为处理大规模数值计算而设计。
NumPy的三大核心优势:
- 高性能数组:底层用C语言实现,运算速度远超Python原生列表
- 广播机制:智能实现不同形状数组间的运算
- 矢量化操作:避免低效循环,用数组表达式替代显式循环
安装NumPy
pip install numpy
核心操作指南
1. 创建数组
import numpy as np
# 从列表创建
arr1 = np.array([1, 2, 3]) # 一维数组
# 特殊数组
zeros = np.zeros((2, 3)) # 2x3全0数组
ones = np.ones((3,)) # 全1一维数组
identity = np.eye(3) # 3x3单位矩阵
# 序列数组
range_arr = np.arange(0, 10, 2) # [0, 2, 4, 6, 8]
linspace_arr = np.linspace(0, 1, 5) # [0., 0.25, 0.5, 0.75, 1.]
2. 数组属性查看
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # (2, 3) 数组维度
print(arr.ndim) # 2 维度数量
print(arr.size) # 6 元素总数
print(arr.dtype) # int64 数据类型
3. 索引与切片
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 基本索引
print(arr[0, 1]) # 2 → 第0行第1列
# 切片操作
print(arr[:2, 1:])
# 输出:[[2 3]
# [5 6]]
# 布尔索引
mask = arr > 5
print(arr[mask]) # [6 7 8 9]
4. 形状操作
arr = np.arange(6)
# 改变形状
arr_3x2 = arr.reshape(3, 2)
# [[0 1]
# [2 3]
# [4 5]]
# 展平数组
flattened = arr_3x2.flatten() # [0 1 2 3 4 5]
# 转置矩阵
transposed = arr_3x2.T
# [[0 2 4]
# [1 3 5]]
5. 数学运算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 元素级运算
print(a + b) # [5 7 9]
print(a * 2) # [2 4 6]
print(np.sin(a)) # 三角函数
# 矩阵乘法
mat_a = np.array([[1, 2], [3, 4]])
mat_b = np.array([[5, 6], [7, 8]])
print(mat_a @ mat_b) # 或 np.dot(mat_a, mat_b)
# [[19 22]
# [43 50]]
# 统计运算
arr = np.array([[1, 2], [3, 4]])
print(np.mean(arr)) # 2.5 平均值
print(np.sum(axis=0)) # [4 6] 列求和
print(np.max(axis=1)) # [2 4] 行最大值
6. 广播机制实例
# 3x3矩阵 + 1x3行向量 → 自动广播
matrix = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
row_vector = np.array([10, 20, 30])
result = matrix + row_vector
# [[11 22 33]
# [14 25 36]
# [17 28 39]]
为什么选择NumPy?
- 效率对比:处理百万级数据时,NumPy比纯Python快50倍以上
- 内存优化:ndarray内存连续存储,减少内存碎片
- 生态支持:所有科学计算库的统一数据接口
- 并行计算:底层BLAS/LAPACK加速支持
学习建议
- 掌握核心概念:ndarray、广播、矢量化
- 多用IPython/Jupyter实时验证操作
- 结合Matplotlib进行数据可视化
- 进阶学习:内存布局、Stride机制、C-API
NumPy是打开Python科学计算大门的钥匙,熟练掌握它将使你在数据分析、机器学习等领域事半功倍!建议从官方文档和实际案例入手,在项目中深化理解。
官方资源:
📖 NumPy官方文档
🚀 GitHub仓库
📊 Cheat Sheet