NumPy 是 Python 中用于科学计算的核心库之一,提供了高性能的多维数组对象、广播功能以及大量的数学函数。NumPy 的核心是 ndarray
(N-dimensional array,多维数组),它是一个快速、灵活且高效的数据结构,适用于处理大规模数据集。NumPy 的广泛应用包括数据分析、机器学习、图像处理、信号处理等领域。
本教程将详细介绍 NumPy 的基本概念、常用操作以及一些高级功能,帮助读者快速上手并掌握 NumPy 的使用。
在开始使用 NumPy 之前,需要先安装它。可以通过以下命令使用 pip
安装 NumPy:
pip install numpy
安装完成后,可以在 Python 中导入 NumPy 库:
import numpy as np
NumPy 提供了多种创建数组的方法。以下是一些常见的创建数组的方式:
import numpy as np
# 从 Python 列表创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)
# 从嵌套列表创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
np.zeros
和 np.ones
创建数组# 创建一个 3x3 的全零数组
zeros_arr = np.zeros((3, 3))
print(zeros_arr)
# 创建一个 2x4 的全一数组
ones_arr = np.ones((2, 4))
print(ones_arr)
np.arange
创建数组# 创建一个从 0 到 9 的一维数组
arr_range = np.arange(10)
print(arr_range)
# 创建一个从 1 到 10,步长为 2 的一维数组
arr_step = np.arange(1, 10, 2)
print(arr_step)
np.linspace
创建数组# 创建一个从 0 到 1 的等间隔数组,包含 5 个元素
lin_arr = np.linspace(0, 1, 5)
print(lin_arr)
NumPy 数组具有一些重要的属性,可以帮助我们了解数组的结构和内容:
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 数组的维度
print("Shape:", arr.shape)
# 数组的元素类型
print("Dtype:", arr.dtype)
# 数组的元素总数
print("Size:", arr.size)
# 数组的维度数
print("Ndims:", arr.ndim)
NumPy 数组支持类似于 Python 列表的索引和切片操作,但可以处理多维数组。
arr = np.array([1, 2, 3, 4, 5])
# 获取*个元素
print(arr[0])
# 获取前三个元素
print(arr[:3])
# 获取倒数第二个元素
print(arr[-2])
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 获取*行
print(arr[0])
# 获取第二列
print(arr[:, 1])
# 获取子数组
print(arr[1:3, 0:2])
NumPy 提供了丰富的数组操作函数,包括数学运算、统计运算、排序等。
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# 加法
print(arr1 + arr2)
# 乘法
print(arr1 * arr2)
# 平方根
print(np.sqrt(arr1))
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 计算数组的总和
print(np.sum(arr))
# 计算每一列的平均值
print(np.mean(arr, axis=0))
# 计算每一行的*值
print(np.max(arr, axis=1))
arr = np.array([3, 1, 2, 4, 5])
# 对数组进行排序
sorted_arr = np.sort(arr)
print(sorted_arr)
# 返回排序后的索引
indices = np.argsort(arr)
print(indices)
NumPy 的广播机制允许在不同形状的数组之间进行算术运算。广播规则如下:
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([10, 20, 30])
# 广播机制允许不同形状的数组进行运算
result = arr1 + arr2
print(result)
NumPy 提供了专门的矩阵运算函数,如矩阵乘法、矩阵转置等。
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
# 矩阵乘法
result = np.dot(arr1, arr2)
print(result)
# 矩阵转置
transposed = arr1.T
print(transposed)
NumPy 提供了丰富的线性代数函数,如求解线性方程组、计算特征值和特征向量等。
arr = np.array([[3, 1], [1, 2]])
# 计算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(arr)
print("Eigenvalues:", eigenvalues)
print("Eigenvectors:", eigenvectors)
# 求解线性方程组
b = np.array([9, 8])
x = np.linalg.solve(arr, b)
print("Solution:", x)
NumPy 提供了生成随机数的功能,可以用于模拟和统计分析。
# 生成 5 个 0 到 1 之间的随机数
random_numbers = np.random.rand(5)
print(random_numbers)
# 生成一个 3x3 的随机整数矩阵,范围在 0 到 9 之间
random_matrix = np.random.randint(0, 10, (3, 3))
print(random_matrix)
# 生成服从正态分布的随机数
normal_distribution = np.random.normal(0, 1, 5)
print(normal_distribution)
NumPy 支持将数组保存到文件和从文件中加载数组。
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 保存数组到文件
np.save('array.npy', arr)
# 从文件加载数组
loaded_arr = np.load('array.npy')
print(loaded_arr)
# 保存数组为文本文件
np.savetxt('array.txt', arr)
# 从文本文件加载数组
loaded_txt_arr = np.loadtxt('array.txt')
print(loaded_txt_arr)
NumPy 是 Python 中用于科学计算的核心库,提供了高效的多维数组对象和丰富的数学函数。本教程介绍了 NumPy 的基本概念、常用操作以及一些高级功能,帮助读者快速上手并掌握 NumPy 的使用。通过学习和实践,读者可以在数据分析、机器学习、图像处理等领域中充分利用 NumPy 的强大功能。