本文共 2541 字,大约阅读时间需要 8 分钟。
NumPy 库详细介绍
NumPy(Numerical Python)是 Python 中用于科学计算的基础库之一,提供了强大的数组对象 ndarray 以及大量的数学函数。它是许多科学计算和数据分析库的基础,包括 Pandas、Matplotlib 和 TensorFlow 等。NumPy 高效地处理大型数据集和矩阵运算,支持矢量化运算,使得科学计算更加高效。
安装与导入
NumPy 可以通过 pip 安装:
pip install numpy
导入方式如下:
import numpy as np
NumPy 核心概念
2.1 ndarray 对象
NumPy 的核心对象是 ndarray,它是一种多维数组对象,支持矢量化的数学运算和高级索引。相比 Python 原生的列表,ndarray 在内存占用和计算效率上要高得多。
创建 ndarray 的常见方式有:
import numpy as np# 一维数组arr = np.array([1, 2, 3, 4, 5])# 二维数组(矩阵)arr2d = np.array([[1, 2, 3], [4, 5, 6]])# 三维数组arr3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
2.2 数组属性
ndarray 对象具有一些非常有用的属性,例如:
.shape:返回数组的维度(形状),例如 (3, 4) 表示 3 行 4 列。.ndim:返回数组的维度数。.size:返回数组的元素总数。.dtype:返回数组元素的数据类型。.itemsize:返回数组中每个元素的字节大小。arr = np.array([1, 2, 3])print(arr.shape) # 输出 (3,)print(arr.ndim) # 输出 1print(arr.size) # 输出 3print(arr.dtype) # 输出 int64
2.3 数组的索引与切片
NumPy 数组的索引和切片方法比 Python 原生的列表更加灵活,可以使用整数索引、切片、布尔索引和花式索引。
arr = np.array([10, 20, 30, 40])print(arr[2]) # 输出 30arr = np.array([1, 2, 3, 4, 5])print(arr[1:4]) # 输出 [2, 3, 4]arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print(arr2d[1, 2]) # 输出 6print(arr2d[0:2, 1:3]) # 输出 [[2, 3], [5, 6]]arr = np.array([1, 2, 3, 4, 5])print(arr[arr > 2]) # 输出 [3, 4, 5]arr = np.array([1, 2, 3, 4, 5])print(arr[[0, 2, 4]]) # 输出 [1, 3, 5]
3.1 数组的数学运算
NumPy 提供了许多高效的数学运算,支持按元素操作和广播机制。
arr = np.array([1, 2, 3])arr2 = np.array([4, 5, 6])print(arr + arr2) # 输出 [5, 7, 9]print(arr * arr2) # 输出 [4, 10, 18]arr = np.array([1, 2, 3])arr2 = np.array([10])print(arr + arr2) # 输出 [11, 12, 13]arr = np.array([0, np.pi/2, np.pi])print(np.sin(arr)) # 输出 [0., 1., 0.]
3.2 聚合操作
NumPy 提供了许多聚合函数,用于计算数组的最大值、最小值、均值、标准差等。
arr = np.array([1, 2, 3, 4, 5])print(np.sum(arr)) # 输出 15print(np.mean(arr)) # 输出 3.0print(np.max(arr)) # 输出 5
3.3 数组的形状与重塑
arr = np.array([1, 2, 3, 4, 5, 6])reshaped = arr.reshape(2, 3)print(reshaped)
arr = np.array([[1, 2], [3, 4]])flat = arr.flatten()print(flat) # 输出 [1, 2, 3, 4]arr = np.array([[1, 2], [3, 4]])print(arr.T) # 输出 [[1, 3], [2, 4]]
3.4 线性代数操作
A = np.array([[1, 2], [3, 4]])B = np.array([[5, 6], [7, 8]])print(np.dot(A, B)) # 或 A @ BA = np.array([[1, 2], [3, 4]])inv_A = np.linalg.inv(A)print(inv_A)A = np.array([[4, -2], [1, 1]])eigenvalues, eigenvectors = np.linalg.eig(A)print("Eigenvalues:", eigenvalues)print("Eigenvectors:", eigenvectors) 3.5 随机数生成
arr = np.random.randint(1, 10, size=5)print(arr)arr = np.random.rand(3, 2)print(arr)arr = np.random.randn(2, 3)print(arr)
转载地址:http://pgjfk.baihongyu.com/