python中的numpy库

lemon Lv4

1. 核心功能

  • 多维数组操作:提供高效的 ndarray 对象,支持向量、矩阵、高维数组运算。
  • 数学函数集成:内置三角函数、指数函数、统计函数等,如 np.sin(), np.exp(), np.mean()
  • 线性代数:支持矩阵乘法、求逆、特征值计算等(通过 np.linalg 模块)。
  • 随机数生成:提供均匀分布、正态分布等随机数生成函数(如 np.random.rand())。
  • 文件读写:支持 CSV、二进制文件等数据格式的读写。

2. 常用类与方法

  • 创建数组

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import numpy as np

    # 从列表创建
    arr = np.array([1, 2, 3])

    # 全零/全一数组
    zeros = np.zeros((2, 3)) # 2行3列全零
    ones = np.ones((3, 4), dtype=int) # 3行4列全一,指定数据类型

    # 等差/等分数组
    arange = np.arange(0, 10, 2) # [0,2,4,6,8]
    linspace = np.linspace(0, 1, 5) # [0.0, 0.25, 0.5, 0.75, 1.0]
  • 数组属性

    • shape:维度(如 (3, 4) 表示3行4列)。
    • dtype:数据类型(如 int32, float64)。
    • ndim:维度数(一维、二维等)。
    • size:元素总数。
  • 数组操作

    • reshape():改变形状(如 arr.reshape(3, 4))。
    • flatten():展平为一维数组。
    • transpose():转置(行列互换)。
    • concatenate():合并数组(按行或列)。
  • 数学运算

    1
    2
    3
    4
    5
    6
    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.dot(a, b)) # 点积 → 32
  • 统计函数

    • np.mean():平均值。
    • np.std():标准差。
    • np.max()/np.min():最大值/最小值。
  • 线性代数

    1
    2
    3
    4
    5
    A = np.array([[1, 2], [3, 4]])
    B = np.array([[5, 6], [7, 8]])

    print(np.dot(A, B)) # 矩阵乘法 → [[19,22], [43,50]]
    print(np.linalg.inv(A)) # 矩阵求逆(需方阵)
  • 随机数生成

    1
    2
    3
    4
    5
    6
    7
    8
    # 均匀分布(0-1)
    rand = np.random.rand(2, 3)

    # 正态分布
    randn = np.random.randn(3, 4)

    # 随机整数(1-10)
    randint = np.random.randint(1, 11, size=(5,))

3. 使用示例

  • 数组索引与切片

    1
    2
    3
    4
    arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

    print(arr[0, 1]) # 输出第二行第一列 → 2
    print(arr[1:, :2]) # 输出第二行到最后一行,前两列 → [[4,5], [7,8]]
  • 广播机制

    1
    2
    3
    a = np.array([1, 2, 3])
    b = 2
    print(a * b) # 输出 [2,4,6](标量自动广播到每个元素)
  • 文件读写

    1
    2
    3
    4
    5
    # 保存到 CSV
    np.savetxt("data.csv", arr, delimiter=",")

    # 从 CSV 读取
    loaded_arr = np.loadtxt("data.csv", delimiter=",")

4. 注意事项

  • 数据类型一致性:确保数组元素类型一致,避免隐式转换错误。
  • 越界访问:避免使用超出数组维度的索引(如 arr[10] 对长度为5的数组)。
  • 内存管理:处理大型数组时,注意内存使用情况,避免溢出。
  • 广播规则:理解不同形状数组间的运算规则(如 (3,)(3,1) 的广播)。
  • 文件路径:读写文件时检查路径是否存在及权限问题。

总结

  • 基础操作:用 np.array() 创建数组,reshape() 调整形状,dtype 指定数据类型。
  • 数学运算:直接对数组进行加减乘除,或使用 np.dot() 计算点积。
  • 统计分析:用 np.mean(), np.std() 等函数快速计算统计量。
  • 线性代数:通过 np.linalg 模块进行矩阵运算。
  • 随机数:用 np.random 模块生成各种分布的随机数。
  • 标题: python中的numpy库
  • 作者: lemon
  • 创建于 : 2025-04-12 22:06:53
  • 更新于 : 2025-04-12 22:16:02
  • 链接: https://lemon2003.github.io/post/20250412220653.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论