2025-03-05
编程
00
请注意,本文编写于 54 天前,最后修改于 54 天前,其中某些信息可能已经过时。

目录

安装
基本使用示例
1. 创建数组
2. 数组的基本操作
3. 数组索引和切片
4. 统计函数
5. 广播机制
6. 高级索引
7. 数组拼接与分割
8. 文件输入输出
9. 线性代数

NumPy 是 Python 中用于科学计算的核心库,它提供了强大的多维数组对象(ndarray),以及用于处理这些数组的大量函数。

NumPy 的高效性和灵活性使其成为数据分析、机器学习和其他科学计算任务的基础工具。

安装

首先,你需要安装 NumPy 包。可以通过 pip 来安装:

bash
pip install numpy

基本使用示例

以下是一些具体的示例,展示了如何使用 NumPy 进行基本的数组操作和一些高级功能。

1. 创建数组

你可以通过多种方式创建 NumPy 数组:

python
import numpy as np # 从列表创建一维数组 a = np.array([1, 2, 3]) print(a) # 从列表创建二维数组 b = np.array([[1, 2, 3], [4, 5, 6]]) print(b) # 使用 arange 函数创建数组 c = np.arange(10) print(c) # 使用 linspace 函数创建等间距数组 d = np.linspace(0, 1, 5) # 在 0 到 1 之间生成 5 个等间距的数 print(d) # 创建全为零的数组 e = np.zeros((3, 3)) print(e) # 创建全为一的数组 f = np.ones((3, 3)) print(f) # 创建对角矩阵 g = np.eye(3) print(g) # 创建随机数数组 h = np.random.rand(3, 3) print(h)

2. 数组的基本操作

NumPy 提供了丰富的数组操作方法:

python
import numpy as np # 创建两个数组 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(np.dot(a, b)) # 32 # 转置 c = np.array([[1, 2], [3, 4]]) print(c.T) # [[1 3] [2 4]] # 形状操作 print(c.shape) # (2, 2) print(c.reshape(1, 4)) # [[1 2 3 4]]

3. 数组索引和切片

NumPy 支持灵活的索引和切片操作:

python
import numpy as np # 创建一个二维数组 a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 索引单个元素 print(a[0, 0]) # 1 # 索引一行 print(a[0]) # [1 2 3] # 切片操作 print(a[0:2, 1:3]) # [[2 3] [5 6]] # 条件索引 print(a[a > 5]) # [6 7 8 9]

4. 统计函数

NumPy 提供了许多统计函数来帮助分析数据:

python
import numpy as np # 创建一个数组 a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 求和 print(np.sum(a)) # 45 # 按列求和 print(np.sum(a, axis=0)) # [12 15 18] # 按行求和 print(np.sum(a, axis=1)) # [6 15 24] # 平均值 print(np.mean(a)) # 5.0 # 最大值和最小值 print(np.max(a)) # 9 print(np.min(a)) # 1 # 标准差 print(np.std(a)) # 2.581988897471611

5. 广播机制

NumPy 的广播机制允许不同形状的数组进行算术运算:

python
import numpy as np # 创建一个二维数组 a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 创建一个一维数组 b = np.array([1, 0, 1]) # 广播加法 print(a + b) # [[2 2 4] # [5 5 7] # [8 8 10]]

6. 高级索引

NumPy 支持布尔索引和整数数组索引:

python
import numpy as np # 创建一个数组 a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 布尔索引 print(a[a > 5]) # [6 7 8 9] # 整数数组索引 indices = np.array([0, 2, 1]) print(a[indices]) # [[1 2 3] [7 8 9] [4 5 6]]

7. 数组拼接与分割

NumPy 提供了多种方法来拼接和分割数组:

python
import numpy as np # 创建两个数组 a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6]]) # 水平拼接 print(np.hstack((a, b))) # [[1 2 5 6] # [3 4 0 0]] # 垂直拼接 print(np.vstack((a, b))) # [[1 2] # [3 4] # [5 6]] # 分割数组 c = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) print(np.hsplit(c, 2)) # 将 c 水平分成两部分 # [array([[1, 2], # [5, 6]]), # array([[3, 4], # [7, 8]])] print(np.vsplit(c, 2)) # 将 c 垂直分成两部分 # [array([[1, 2, 3, 4]]), # array([[5, 6, 7, 8]])]

8. 文件输入输出

NumPy 提供了方便的方法来保存和加载数组:

python
import numpy as np # 创建一个数组 a = np.array([[1, 2, 3], [4, 5, 6]]) # 保存到文件 np.save('array.npy', a) # 从文件加载 b = np.load('array.npy') print(b)

9. 线性代数

NumPy 提供了丰富的线性代数功能:

python
import numpy as np # 创建两个矩阵 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.det(a)) # -2.0 # 计算逆矩阵 print(np.linalg.inv(a)) # [[-2. 1. ] # [ 1.5 -0.5]]