numpy 简介

NumPy(Numerical Python)是 Python 生态中用于科学计算的核心库,提供高性能的多维数组对象(ndarray)及相关的数学运算工具。其核心特性包括:

  • 高效数组操作:基于 C 语言实现,支持向量化运算,避免显式循环。
  • 广播机制:允许不同形状的数组进行数学运算。
  • 线性代数:内置矩阵运算、傅里叶变换、随机数生成等功能。
  • 跨平台兼容:与 Pandas、SciPy、Matplotlib 等库无缝集成。

核心功能

数组创建

通过 np.array() 从列表或元组创建数组,支持指定数据类型(dtype):

import numpy as np  
arr = np.array([1, 2, 3], dtype=np.float32)  

其他常用创建方法:

  • np.zeros((2, 3)):创建 2x3 的全零数组。
  • np.ones(shape):创建全 1 数组。
  • np.arange(0, 10, 2):类似 range,生成等差序列。
数组操作
  • 索引与切片:语法与 Python 列表类似,支持多维索引:
    arr_2d = np.array([[1, 2], [3, 4]])  
    print(arr_2d[1, 0])  # 输出 3  
    
  • 形状调整reshape() 改变数组维度,flatten() 展开为一维数组。
  • 合并与分割np.concatenate() 连接数组,np.split() 分割数组。
数学运算

支持逐元素运算(+, -, *, /)和矩阵乘法(@np.dot()):

a = np.array([1, 2])  
b = np.array([3, 4])  
print(a * b)  # 输出 [3, 8](逐元素相乘)  

广播机制

广播机制:就是这个数组里面的1,2,3一旦运算就需要每个元素都需要运算

允许不同形状的数组进行运算,例如标量与数组相加:

arr = np.array([1, 2, 3])  
print(arr + 5)  # 输出 [6, 7, 8]  

性能优化

  • 避免循环:优先使用内置函数(如 np.sum()np.mean())。
  • 预分配内存:提前创建空数组(np.empty())填充数据。
  • 使用 np.vectorize:将普通函数转换为支持广播的向量化函数。

应用场景

  • 数据预处理:归一化、缺失值填充。
  • 机器学习:特征矩阵运算(如线性回归)。
  • 图像处理:像素数组操作。

示例代码

计算欧氏距离(向量差的 L2 范数):

def euclidean_distance(a, b):  
    return np.sqrt(np.sum((a - b) ** 2))  

NumPy 的官方文档(numpy.org)提供了完整的 API 参考和教程。

更多推荐