返回

numpy方法小结,助你高效处理多维数组

见解分享

在数据科学和机器学习领域,处理多维数组是家常便饭。NumPy,作为Python中强大的多维数组处理库,提供了丰富的功能,帮助我们高效地处理这些复杂的数据结构。

本文将系统地总结NumPy中处理多维数组的常用方法,助力大家轻松驾驭数据处理,实现效率最大化。

多维数组索引

NumPy的多维数组索引规则与Python列表类似,但也有其独特性:

  1. 维度索引: arr[i, j, k],其中i、j、k表示维度索引。逗号前为外层维度,逗号后为内层维度。
  2. 负索引: 负索引从末尾开始计数,如arr[-1]表示最后一个元素。
  3. 切片: arr[start:stop:step],其中start、stop、step表示切片参数,步长默认为1。切片可同时应用于多个维度。

花式索引

花式索引是一种高级索引方式,允许通过数组元素选择来检索或设置数组中的元素。它使用布尔数组或整型数组作为索引:

  1. 布尔索引: arr[bool_array],其中bool_array与arr形状一致,True表示选择该元素,False表示排除。
  2. 整型索引: 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处理多维数组的方法,是数据科学和机器学习中必备的技能。本文总结的常用方法和规则,将帮助大家高效地处理复杂数据结构,从基础索引到高级花式索引,全面提升数据处理能力。