一、NumPy简介
NumPy(Numerical Python)是 Python 中用于科学计算的核心库之一,专注于高效的数值计算。它提供了一个强大的 N 维数组对象(ndarray),支持快速的数组操作和数学函数。NumPy 是许多科学计算库(如 Pandas、SciPy、Scikit-learn 等)的基础。
二、主要特点
1、高效的数组操作
- NumPy 的数组操作比 Python 原生列表快得多,因为它底层是用 C 语言实现的。
2、多维数组支持
- 支持 1D、2D、3D 甚至更高维度的数组。
3、丰富的数学函数
- 提供了大量的数学函数(如线性代数、傅里叶变换、随机数生成等)。
4、广播机制
- 支持不同形状的数组之间的运算。
5、与其他库的集成
- NumPy 是许多科学计算库的基础,如 Pandas、Matplotlib、TensorFlow 等。
三、安装 NumPy
pip install numpy
四、基本用法
1.创建数组:NumPy 的核心是 ndarray 对象,可以通过多种方式创建数组。
import numpy as np
# 从列表创建数组
arr1 = np.array([1, 2, 3, 4, 5])
print("一维数组:", arr1)
# 创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:\n", arr2)
# 创建全零数组
zeros = np.zeros((3, 3))
print("全零数组:\n", zeros)
# 创建全一数组
ones = np.ones((2, 4))
print("全一数组:\n", ones)
# 创建单位矩阵
identity = np.eye(3)
print("单位矩阵:\n", identity)
# 创建等差数列数组
range_arr = np.arange(0, 10, 2) # 从 0 到 10,步长为 2
print("等差数列数组:", range_arr)
# 创建随机数组
random_arr = np.random.rand(2, 3) # 2x3 的随机数组
print("随机数组:\n", random_arr)
2. 数组操作:NumPy 提供了丰富的数组操作功能。
# 数组形状
print("数组形状:", arr2.shape)
# 数组维度
print("数组维度:", arr2.ndim)
# 数组元素类型
print("数组元素类型:", arr2.dtype)
# 数组切片
print("切片:", arr2[0, 1:3]) # 第一行,第 2 到第 3 列
# 数组重塑
reshaped = arr2.reshape(3, 2)
print("重塑后的数组:\n", reshaped)
# 数组转置
transposed = arr2.T
print("转置后的数组:\n", transposed)
# 数组运算
arr3 = np.array([[1, 2], [3, 4]])
arr4 = np.array([[5, 6], [7, 8]])
print("数组相加:\n", arr3 + arr4)
print("数组相乘:\n", arr3 * arr4) # 逐元素相乘
print("矩阵乘法:\n", np.dot(arr3, arr4)) # 矩阵乘法
3. 数学函数:NumPy 提供了大量的数学函数。
# 求和
print("数组求和:", np.sum(arr3))
# 平均值
print("数组平均值:", np.mean(arr3))
# 标准差
print("数组标准差:", np.std(arr3))
# 最大值和最小值
print("数组最大值:", np.max(arr3))
print("数组最小值:", np.min(arr3))
# 指数和对数
print("指数:", np.exp(arr3))
print("自然对数:", np.log(arr3))
# 三角函数
angles = np.array([0, 30, 45, 60, 90])
print("正弦值:", np.sin(np.deg2rad(angles)))
4. 广播机制:NumPy 的广播机制允许不同形状的数组进行运算。
# 标量与数组运算
arr5 = np.array([1, 2, 3])
print("标量加法:", arr5 + 5)
# 不同形状数组运算
arr6 = np.array([[1], [2], [3]])
print("广播加法:\n", arr5 + arr6)
5. 线性代数:NumPy 提供了线性代数模块 numpy.linalg。
# 矩阵求逆
matrix = np.array([[1, 2], [3, 4]])
inv_matrix = np.linalg.inv(matrix)
print("矩阵的逆:\n", inv_matrix)
# 行列式
det = np.linalg.det(matrix)
print("矩阵的行列式:", det)
# 特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(matrix)
print("特征值:", eigenvalues)
print("特征向量:\n", eigenvectors)
NumPy 是 Python 科学计算的基础库,提供了高效的数组操作和丰富的数学函数。无论是数据处理、机器学习还是科学计算,NumPy 都是不可或缺的工具。通过掌握 NumPy,可以更高效地处理数值计算任务!