numpy库 学习总结

jhhhred / 2024-10-14 / 原文

NumPy 官方文档链接

  • 英文官方文档

    • 主页:NumPy Documentation
    • 参考手册:NumPy Reference
    • 用户指南:NumPy User Guide
  • 中文官方文档

    • 主页:[https://www.numpy.org.cn/reference/]
    • 参考手册:NumPy 参考手册(中文版)
    • 用户指南:NumPy 用户指南(中文版)

NumPy 官方文档总结

1. 简介

  • NumPy(Numerical Python)是 Python 的一个扩展库,提供了大量的数学函数和高效的数组操作功能。
  • 主要特点
    • 高效的多维数组对象 ndarray
    • 广泛的数学函数和操作。
    • 支持广播机制,简化数组运算。
    • 与 C/C++ 和 Fortran 代码的集成能力。

2. 安装

  • 安装命令
    • 使用 pip 安装:
      pip install numpy
      
    • 使用 conda 安装:
      conda install numpy
      

3. 数组创建

  • 创建一维数组
    import numpy as np
    a = np.array([1, 2, 3, 4, 5])
    
  • 创建多维数组
    b = np.array([[1, 2, 3], [4, 5, 6]])
    
  • 特殊数组
    • 全零数组:
      zeros = np.zeros((3, 3))
      
    • 全一数组:
      ones = np.ones((3, 3))
      
    • 单位矩阵:
      identity = np.eye(3)
      
    • 随机数组:
      random_array = np.random.rand(3, 3)
      

4. 数组属性

  • 形状
    a = np.array([[1, 2, 3], [4, 5, 6]])
    print(a.shape)  # (2, 3)
    
  • 数据类型
    print(a.dtype)  # int64
    
  • 元素总数
    print(a.size)  # 6
    
  • 维度数
    print(a.ndim)  # 2
    

5. 数组索引和切片

  • 一维数组
    a = np.array([1, 2, 3, 4, 5])
    print(a[0])  # 1
    print(a[1:4])  # [2, 3, 4]
    
  • 多维数组
    b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    print(b[0, 0])  # 1
    print(b[0, :])  # [1, 2, 3]
    print(b[:, 1])  # [2, 5, 8]
    print(b[1:3, 1:3])  # [[5, 6], [8, 9]]
    

6. 数组操作

  • 数学运算
    a = np.array([1, 2, 3])
    b = np.array([4, 5, 6])
    print(a + b)  # [5, 7, 9]
    print(a - b)  # [-3, -3, -3]
    print(a * b)  # [4, 10, 18]
    print(a / b)  # [0.25, 0.4, 0.5]
    print(np.sqrt(a))  # [1., 1.41421356, 1.73205081]
    
  • 广播机制
    a = np.array([[1, 2, 3], [4, 5, 6]])
    b = np.array([1, 0, 1])
    print(a + b)  # [[2, 2, 4], [5, 5, 7]]
    

7. 数组重塑

  • 改变形状
    a = np.arange(12)
    print(a)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
    b = a.reshape((3, 4))
    print(b)  # [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
    c = a.reshape((2, 2, 3))
    print(c)  # [[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]]
    

8. 数组连接和拆分

  • 连接
    a = np.array([[1, 2], [3, 4]])
    b = np.array([[5, 6]])
    c = np.hstack((a, b))
    print(c)  # [[1, 2, 5, 6], [3, 4, 5, 6]]
    d = np.vstack((a, b))
    print(d)  # [[1, 2], [3, 4], [5, 6]]
    
  • 拆分
    a = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
    b, c = np.hsplit(a, 2)
    print(b)  # [[1, 2], [5, 6]]
    print(c)  # [[3, 4], [7, 8]]
    d, e = np.vsplit(a, 2)
    print(d)  # [[1, 2, 3, 4]]
    print(e)  # [[5, 6, 7, 8]]
    

9. 数组排序

  • 排序
    a = np.array([3, 1, 2])
    print(np.sort(a))  # [1, 2, 3]
    b = np.array([[3, 1, 2], [6, 4, 5]])
    print(np.sort(b, axis=0))  # [[3, 1, 2], [6, 4, 5]]
    print(np.sort(b, axis=1))  # [[1, 2, 3], [4, 5, 6]]
    

10. 数组统计

  • 统计函数
    a = np.array([[1, 2, 3], [4, 5, 6]])
    print(np.sum(a))  # 21
    print(np.mean(a))  # 3.5
    print(np.median(a))  # 3.5
    print(np.min(a))  # 1
    print(np.max(a))  # 6
    print(np.std(a))  # 标准差
    print(np.var(a))  # 方差
    

11. 数组布尔操作

  • 布尔操作
    a = np.array([1, 2, 3, 4, 5])
    b = np.array([0, 1, 2, 3, 4])
    print(a > 3)  # [False, False, False, True, True]
    print(np.any(a > 3))  # True
    print(np.all(a > 3))  # False
    

12. 数组搜索和选择

  • 搜索非零元素
    a = np.array([1, 2, 3, 4, 5])
    print(np.nonzero(a))  # (array([0, 1, 2, 3, 4]),)
    
  • 条件选择
    b = np.where(a > 3, a, 0)
    print(b)  # [0, 0, 0, 4, 5]
    

13. 文件读写

  • 保存数组
    np.save('array.npy', a)
    
  • 读取数组
    b = np.load('array.npy')
    print(b)  # [1, 2, 3, 4, 5]
    

14. 高级功能

  • 广播机制
    a = np.array([[1, 2, 3], [4, 5, 6]])
    b = np.array([1, 0, 1])
    print(a + b)  # [[2, 2, 4], [5, 5, 7]]
    
  • 线性代数
    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))  # [[-2. ,  1. ], [ 1.5, -0.5]]
    

总结

NumPy 是一个功能强大的库,提供了丰富的数组操作和数学函数。