Python 常用库:NumPy 数组基本操作
NumPy(Numerical Python)是 Python 科学计算的基础库,它提供了高性能的多维数组对象以及相关工具。掌握 NumPy 数组的基本操作是进行数据分析和机器学习的前提。
一、环境准备
在使用 NumPy 之前,需要先安装并导入该库。
- 打开终端或命令行工具。
- 输入安装命令并执行:
pip install numpy
- 启动 Python 交互式环境或编辑器(如 Jupyter Notebook、PyCharm)。
- 导入 NumPy 库,通常约定俗成使用
np作为别名:
import numpy as np
二、创建数组
NumPy 的核心对象是 ndarray(N-dimensional array,即 n 维数组)。创建数组最常用的方法是使用 np.array() 函数将 Python 列表转换为数组。
- 创建一维数组:
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)
- 创建二维数组(矩阵):
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
-
使用特定函数初始化数组:
- 生成全为 0 的数组:
zeros_arr = np.zeros((2, 3)) # 创建 2 行 3 列的全 0 矩阵 - 生成全为 1 的数组:
ones_arr = np.ones((3, 3)) # 创建 3 行 3 列的全 1 矩阵 - 生成指定范围的数组(类似 Python 的
range):range_arr = np.arange(0, 10, 2) # 从 0 到 9,步长为 2 - 生成等间距的线性数组:
linspace_arr = np.linspace(0, 10, 5) # 在 0 到 10 之间生成 5 个等间距数字
- 生成全为 0 的数组:
三、查看数组属性
了解数组的基本形状和数据类型对于后续操作至关重要。
- 查看数组的维度(即秩):
print(arr2.ndim)
- 查看数组的形状(即各维度的大小):
print(arr2.shape)
# 输出 (2, 3),表示 2 行 3 列
- 查看数组中元素的总个数:
print(arr2.size)
# 输出 6
- 查看数组中元素的数据类型:
print(arr2.dtype)
# 输出 int32 或 int64,取决于系统
四、数组索引与切片
NumPy 数组的切片方式与 Python 列表类似,但功能更强大,尤其是在多维数组上。
- 访问一维数组中的元素:
print(arr1[0]) # 获取第一个元素
print(arr1[1:4]) # 获取索引 1 到 3 的元素(不包含索引 4)
-
访问二维数组中的元素:
- 格式为
arr[行索引, 列索引]。 - 获取某一行:
print(arr2[0, :]) # 获取第一行所有元素 - 获取某一列:
print(arr2[:, 1]) # 获取第二列所有元素 - 获取单个元素:
print(arr2[1, 2]) # 获取第二行第三列的元素(值为 6)
- 格式为
-
使用布尔索引(根据条件筛选数据):
# 筛选出 arr1 中大于 2 的元素
print(arr1[arr1 > 2])
# 输出 [3 4 5]
五、数组形状操作
处理数据时,经常需要改变数组的维度或进行转置。
- 重塑数组形状(不改变数据总量,只改变排列方式):
arr = np.arange(6)
# 将一维数组重塑为 2 行 3 列的二维数组
arr_reshaped = arr.reshape(2, 3)
print(arr_reshaped)
- 展平数组(将多维数组变为一维数组):
print(arr_reshaped.flatten())
- 转置数组(行变列,列变行):
print(arr_reshaped.T)
六、数组运算
NumPy 支持向量化运算,即直接对数组进行算术运算,而无需编写循环代码,这大大提高了计算效率。
- 执行数组与标量的算术运算:
arr = np.array([1, 2, 3])
print(arr + 10) # 每个元素加 10
print(arr * 2) # 每个元素乘 2
- 执行数组间的算术运算(要求形状相同):
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # 对应元素相加
print(a * b) # 对应元素相乘(非矩阵乘法)
-
计算统计指标:
- 计算平均值:
print(np.mean(arr)) - 计算总和:
print(np.sum(arr)) - 计算最大值和最小值:
print(np.max(arr)) print(np.min(arr))
对于二维数组,可以使用
axis参数指定计算方向。例如,axis=0表示按列计算,axis=1表示按行计算。 - 计算平均值:
| 函数 | 描述 | axis=0 (列) | axis=1 (行) |
|---|---|---|---|
np.sum |
求和 | 每一列的总和 | 每一行的总和 |
np.mean |
求平均值 | 每一列的平均值 | 每一行的平均值 |
以下代码展示了如何在二维数组中按行求和:
matrix = np.array([[1, 2], [3, 4]])
# 沿着 axis=1(行)求和
row_sum = np.sum(matrix, axis=1)
print(row_sum) # 输出 [3 7]
七、矩阵乘法
在数据处理中,区分元素乘法和矩阵乘法非常重要。使用 @ 运算符或 np.dot() 函数可以进行线性代数中的矩阵乘法。
- 准备两个形状兼容的矩阵:
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
- 执行矩阵乘法:
# 方法一:使用 @ 运算符
result1 = A @ B
# 方法二:使用 np.dot 函数
result2 = np.dot(A, B)
print(result1)
暂无评论,快来抢沙发吧!