NumPy简介
NumPy 是 Python 中用于科学计算的核心库,提供了高效的多维数组(ndarray
)和矩阵操作功能。它是许多数据科学、机器学习和科学计算库(如 Pandas、SciPy、Scikit-learn 等)的基础。以下是关于 NumPy 的详细介绍和使用指南:
1. NumPy 的核心功能
- 多维数组:支持高效的数组操作(如索引、切片、广播等)。
- 数学函数:提供丰富的数学函数(如三角函数、指数函数、统计函数等)。
- 线性代数:支持矩阵运算(如矩阵乘法、求逆、特征值分解等)。
- 随机数生成:提供多种随机数生成器。
2. 安装 NumPy
NumPy 可以通过 pip 安装:
pip install numpy
3. 创建数组
NumPy 的核心数据结构是 ndarray
(N-dimensional array,多维数组)。
创建数组
import numpy as np # 从列表创建数组 arr1 = np.array([1, 2, 3, 4, 5]) print(arr1) # 创建全零数组 arr2 = np.zeros((3, 3)) print(arr2) # 创建全一数组 arr3 = np.ones((2, 4)) print(arr3) # 创建单位矩阵 arr4 = np.eye(3) print(arr4) # 创建等差数列 arr5 = np.arange(0, 10, 2) # 从 0 到 10,步长为 2 print(arr5) # 创建随机数组 arr6 = np.random.rand(3, 3) # 3x3 的随机数组 print(arr6)
4. 数组操作
NumPy 提供了丰富的数组操作功能。
索引和切片
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 获取单个元素 print(arr[0, 1]) # 输出: 2 # 切片 print(arr[:2, 1:]) # 输出: [[2, 3], [5, 6]]
形状操作
# 改变数组形状 arr_reshaped = arr.reshape(1, 9) print(arr_reshaped) # 展平数组 arr_flattened = arr.flatten() print(arr_flattened)
数组运算
# 逐元素加法 arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) print(arr1 + arr2) # 输出: [5, 7, 9] # 矩阵乘法 mat1 = np.array([[1, 2], [3, 4]]) mat2 = np.array([[5, 6], [7, 8]]) print(np.dot(mat1, mat2)) # 输出: [[19, 22], [43, 50]]
5. 数学函数
NumPy 提供了丰富的数学函数。
基本数学函数
# 平方根 print(np.sqrt(arr1)) # 指数函数 print(np.exp(arr1)) # 对数函数 print(np.log(arr1))
统计函数
# 求和 print(np.sum(arr1)) # 平均值 print(np.mean(arr1)) # 标准差 print(np.std(arr1))
6. 线性代数
NumPy 提供了线性代数模块 numpy.linalg
。
矩阵运算
# 矩阵求逆 mat = np.array([[1, 2], [3, 4]]) inv_mat = np.linalg.inv(mat) print(inv_mat) # 特征值和特征向量 eigenvalues, eigenvectors = np.linalg.eig(mat) print("Eigenvalues:", eigenvalues) print("Eigenvectors:", eigenvectors)
7. 随机数生成
NumPy 提供了多种随机数生成器。
生成随机数
# 生成随机浮点数 print(np.random.rand()) # 0 到 1 之间的随机数 # 生成随机整数 print(np.random.randint(0, 10)) # 0 到 10 之间的随机整数 # 生成正态分布随机数 print(np.random.normal(0, 1, size=(3, 3))) # 均值为 0,标准差为 1 的 3x3 数组
8. 广播机制
NumPy 的广播机制允许对不同形状的数组进行逐元素操作。
广播示例
arr = np.array([[1, 2, 3], [4, 5, 6]]) scalar = 2 print(arr + scalar) # 输出: [[3, 4, 5], [6, 7, 8]]
9. 性能优化
NumPy 的底层实现使用 C 语言,性能非常高。以下是一些优化建议:
- 避免 Python 循环:尽量使用 NumPy 的内置函数。
- 使用视图而非副本:通过切片操作创建视图,避免复制数据。
- 使用
np.einsum
:高效实现复杂的矩阵运算。
10. 示例应用
计算欧几里得距离
def euclidean_distance(x, y): return np.sqrt(np.sum((x - y) ** 2)) x = np.array([1, 2, 3]) y = np.array([4, 5, 6]) print(euclidean_distance(x, y)) # 输出: 5.196
图像处理
from PIL import Image # 读取图像 image = Image.open('image.jpg') image_array = np.array(image) # 灰度化 gray_image = np.dot(image_array[..., :3], [0.2989, 0.5870, 0.1140]) Image.fromarray(gray_image).show()
总结
- NumPy 是 Python 中用于科学计算的核心库。
- 提供了高效的多维数组和矩阵操作功能。
- 支持数学函数、线性代数、随机数生成等高级功能。
- 是数据科学、机器学习和科学计算的基础工具。
AI自动测试化入门到精通 文章被收录于专栏
如何做AI自动化测试