返回
numpy方法小结,助你高效处理多维数组
见解分享
2023-12-02 22:01:02
在数据科学和机器学习领域,处理多维数组是家常便饭。NumPy,作为Python中强大的多维数组处理库,提供了丰富的功能,帮助我们高效地处理这些复杂的数据结构。
本文将系统地总结NumPy中处理多维数组的常用方法,助力大家轻松驾驭数据处理,实现效率最大化。
多维数组索引
NumPy的多维数组索引规则与Python列表类似,但也有其独特性:
- 维度索引: arr[i, j, k],其中i、j、k表示维度索引。逗号前为外层维度,逗号后为内层维度。
- 负索引: 负索引从末尾开始计数,如arr[-1]表示最后一个元素。
- 切片: arr[start:stop:step],其中start、stop、step表示切片参数,步长默认为1。切片可同时应用于多个维度。
花式索引
花式索引是一种高级索引方式,允许通过数组元素选择来检索或设置数组中的元素。它使用布尔数组或整型数组作为索引:
- 布尔索引: arr[bool_array],其中bool_array与arr形状一致,True表示选择该元素,False表示排除。
- 整型索引: arr[int_array],其中int_array与arr形状一致,元素值表示要检索或设置的索引。
规则
规则 1:如果索引为数字或切片,则在给定维度上进行索引;如果索引为数组,则进行花式索引。
规则 2:如果多个索引同时存在,则先进行外层维度索引,再进行内层维度索引。
规则 3:花式索引可以混合使用布尔数组和整型数组,但必须与arr形状一致。
常用方法
ndarray.shape: 返回数组的形状(元组)。
ndarray.size: 返回数组元素的总数量。
ndarray.ndim: 返回数组的维度数。
ndarray.flatten(): 将多维数组展平成一维数组。
ndarray.reshape(new_shape): 将数组重塑为指定形状。
ndarray.transpose(axes): 转置数组维度(axes为转置顺序)。
ndarray.max(axis): 返回指定维度上的最大值。
ndarray.min(axis): 返回指定维度上的最小值。
ndarray.mean(axis): 返回指定维度上的平均值。
ndarray.sum(axis): 返回指定维度上的和。
实例
# 创建一个3D数组
arr = np.arange(24).reshape(2, 3, 4)
# 基本索引
print(arr[0, 1, 2]) # 输出:5
# 切片索引
print(arr[:, 1, :]) # 输出:[[ 3 7 11] [15 19 23]]
# 布尔索引
mask = arr > 10
print(arr[mask]) # 输出:[11 12 13 14 15 16 17 18 19 20 21 22 23]
# 整型索引
indices = np.array([[0, 2], [1, 1]])
print(arr[indices]) # 输出:[[ 0 2] [ 7 11]]
# 花式索引(混合布尔和整型)
indices = np.array([True, False], dtype=bool)
print(arr[indices, :, 2]) # 输出:[[ 2 6] [14 18]]
结论
掌握NumPy处理多维数组的方法,是数据科学和机器学习中必备的技能。本文总结的常用方法和规则,将帮助大家高效地处理复杂数据结构,从基础索引到高级花式索引,全面提升数据处理能力。