作为一名数据分析师,Numpy(Python科学计算库)的使用必不可少。下面是 NumPy 的初步使用方法的总结。
📌 NumPy 使用方法总结
NumPy(Numerical Python)是 Python 中用于 科学计算 和 数值处理 的核心库,提供高效的多维数组对象 ndarray
以及丰富的数学函数。
🔧 1. 安装
pip install numpy
导入:
import numpy as np
📦 2. 核心数据结构:ndarray
✅ 创建数组
# 从Python列表创建
a = np.array([1, 2, 3])
# 指定dtype
b = np.array([1, 2, 3], dtype=float)
# 多维数组
c = np.array([[1, 2], [3, 4]])
# 特殊数组
np.zeros((2,3)) # 全0数组
np.ones((3,3)) # 全1数组
np.full((2,2), 9) # 指定值数组
np.eye(3) # 单位矩阵
np.arange(0, 10, 2) # 类似range
np.linspace(0, 1, 5) # 均匀分布序列
📐 3. 数组属性
a.shape # 数组形状 (行, 列)
a.ndim # 数组维度
a.size # 元素总数
a.dtype # 数据类型
a.itemsize # 每个元素字节数
✏️ 4. 数组索引和切片
a[0] # 取第一个元素
a[-1] # 取最后一个元素
a[1:4] # 切片
a[:, 0] # 取第一列
a[0, :] # 取第一行
a[::2] # 步长切片
布尔索引:
a[a > 2] # 取出大于2的元素
🔄 5. 形状操作
a.reshape(3,2) # 改变形状
a.ravel() # 拉平成一维
a.T # 转置
np.hstack((a,b)) # 水平拼接
np.vstack((a,b)) # 垂直拼接
🔢 6. 基本运算
NumPy 支持 逐元素运算,无需显式循环:
a + b # 加法
a - b # 减法
a * b # 逐元素乘法
a / b # 逐元素除法
a ** 2 # 幂运算
np.sqrt(a) # 开平方
矩阵乘法:
np.dot(a, b) # 矩阵乘法
a @ b # 矩阵乘法(Python 3.5+)
📊 7. 聚合函数
a.sum() # 求和
a.mean() # 均值
a.max(), a.min() # 最大值、最小值
a.std() # 标准差
a.argmin() # 最小值索引
a.argmax() # 最大值索引
按轴聚合:
a.sum(axis=0) # 按列求和
a.sum(axis=1) # 按行求和
🔧 8. 广播机制(Broadcasting)
NumPy 允许不同形状数组间的运算,自动扩展匹配:
a = np.array([1,2,3])
b = np.array([[1],[2],[3]])
a + b # 自动广播成3x3
📈 9. 常用随机数
np.random.rand(3,3) # [0,1)均匀分布
np.random.randn(3,3) # 标准正态分布
np.random.randint(0,10,(3,3)) # 整数随机矩阵
np.random.seed(42) # 设置随机种子,保证结果可复现
🧮 10. 线性代数
np.linalg.inv(A) # 求逆矩阵
np.linalg.det(A) # 行列式
np.linalg.eig(A) # 特征值和特征向量
np.linalg.solve(A,b) # 解线性方程 Ax=b
📚 11. 常用技巧
- 类型转换:
a.astype(np.float32)
- 复制 vs 视图:
b = a.copy() # 深拷贝
c = a.view() # 视图,修改 c 会影响 a
- 内存高效操作: 尽量使用切片和广播,而不是 Python 循环。
💡 12. 参考资源
- 官方文档:https://numpy.org/doc/
- 快速教程:NumPy Quickstart
✅ 总结:
NumPy 的强大在于 高效的多维数组 和 广播、矢量化操作,让你用更少的代码实现更快的数值计算。