NumPy是Python中用于科学计算的基础库,其核心是多维数组对象ndarray,支持高效的数值运算。以下是NumPy的核心用法总结:
1. 创建数组从列表/元组转换import numpy as np# 一维数组a = np.array([1, 2, 3]) # 列表转数组b = np.array((4, 5, 6)) # 元组转数组# 多维数组c = np.array([[1, 2], [3, 4]]) # 二维数组d = np.array([(1.5, 2), (3, 4)], dtype=np.float32) # 指定数据类型使用NumPy原生方法- np.arange:生成等差数列。e = np.arange(0, 10, 2) # 步长为2:[0, 2, 4, 6, 8]
- np.zeros/np.ones:生成全0或全1数组。f = np.zeros((2, 3)) # 2x3的全0数组g = np.ones((3,), dtype=np.int8) # 一维全1数组(int8类型)
- np.random:生成随机数组。h = np.random.rand(2, 2) # 2x2的[0,1)均匀分布随机数
2. 数组属性与类型转换查看数组属性print(a.shape) # 数组形状:(3,)print(c.ndim) # 维度:2print(d.dtype) # 数据类型:float32类型转换i = a.astype(np.float64) # 转换为float64类型3. 数组操作基本运算x = np.array([1, 2])y = np.array([3, 4])print(x + y) # 逐元素相加:[4, 6]print(x * y) # 逐元素相乘:[3, 8]print(np.dot(x, y)) # 点积:1*3 + 2*4 = 11变形与拼接- reshape:改变形状(不改变数据)。j = np.arange(6).reshape(2, 3) # 2x3数组
- vstack/hstack:垂直/水平拼接。k = np.vstack([x, y]) # 垂直堆叠:[[1, 2], [3, 4]]
随机抽样l = np.random.choice(10, size=5, replace=False) # 从0-9中不放回抽5个4. 数组索引与切片基础索引m = np.array([[1, 2, 3], [4, 5, 6]])print(m[0, 1]) # 第0行第1列:2print(m[:, 1:]) # 所有行,第1列到末尾:[[2, 3], [5, 6]]布尔索引mask = m > 3print(m[mask]) # 输出满足条件的元素:[4, 5, 6]5. 数学函数与代数运算通用函数(ufunc)n = np.array([-1, 0, 1])print(np.abs(n)) # 绝对值:[1, 0, 1]print(np.exp(n)) # 指数函数print(np.sqrt(np.abs(n))) # 复合运算线性代数o = np.array([[1, 2], [3, 4]])p = np.linalg.inv(o) # 矩阵求逆q = np.trace(o) # 迹:1 + 4 = 56. 高级功能- 广播机制:不同形状数组的自动扩展运算。r = np.array([1, 2]) + np.array([[1], [2]]) # 结果为[[2, 3], [3, 4]]
- 文件读写:np.save('array.npy', a) # 保存数组loaded = np.load('array.npy') # 加载数组
总结NumPy的核心优势在于:
- 高效的多维数组操作(如ndarray)。
- 丰富的数学函数库(如线性代数、随机数生成)。
- 与Python生态集成(如Pandas、SciPy依赖NumPy)。
通过掌握数组创建、索引、运算和函数应用,可以大幅提升科学计算效率。