Numpy高维数组的索引()

# 创建一个形状为 (3, 4, 2) 的随机数组
# arr 代表 3 个实例,每个实力有 4 个任务点,每个任务点有 (x, y) 坐标
arr = np.random.randint(0, 10, size=(3, 4, 2))
 arr:
 [[[8 4]
  [2 9]
  [0 5]
  [4 7]]

 [[5 5]
  [1 6]
  [8 5]
  [1 8]]

 [[6 2]
  [5 5]
  [4 5]
  [9 6]]]
索引或切片 描述 这里的ijk都要加1 示例代码 结果形状与说明
arr[i] 选取第一个维度中索引为 i 的子数组。 选择第i个实例 arr[0] 形状: (4, 2)
选取第1个任务(索引0)的所有点。
arr[i, j] 选取第一个维度中索引为 i 的子数组的第二个维度中索引为 j 的子数组。 选择第i个实例第j个任务点 arr[0, 1] 形状: (2,)
选取第1个任务(索引0)的第2个点(索引1)的所有坐标。
arr[i, j, k] 选取第一个维度中索引为 i 的子数组的第二个维度中索引为 j 的子数组的第三个维度中索引为 k 的标量。 选择第i个实例第j个任务点的第k个坐标 arr[0, 1, 0] 形状: () (标量)
选取第1个任务的第2个点的x坐标。
arr[:, i] 选取所有第一个维度中索引为 i 的子数组。 选择所有实例的第i个任务点 arr[:, 1] 形状: (3, 2)
选取所有任务的第2个点(索引1)。
arr[:, :, k] 选取前两个维度的所有子数组中,第三个维度中索引为 k 的切片。 选择所有实例所有任务点的第k个坐标 arr[:, :, 0] 形状: (3, 4)
选取所有任务的所有点的x坐标。
arr[i:j] 切片:选取第一个维度中从索引 i 到 j-1 的所有子数组。 选择第i到j个实例(不包括j) arr[1:3] 形状: (2, 4, 2)
选取第2个和第3个任务。
arr[i:] 切片:选取第一个维度中从索引 i 到末尾的所有子数组。 选择第i到最后的所有实例 arr[1:] 形状: (2, 4, 2)
选取第2个任务到末尾的所有任务。
arr[:-j] 切片:选取第一个维度中从开始到倒数第 j 个索引之前的所有子数组。 选择开头到倒数第j个的实例(不包括倒数第j) arr[:-1] 形状: (2, 4, 2)
选取除了最后一个任务之外的所有任务。
arr[:, -1] 负索引:选取所有第一个维度的子数组中,第二个维度的最后一个子数组。 选择所有实例的最后一个任务点 arr[:, -1] 形状: (3, 2)
选取所有任务的最后一个点。
arr[..., i] 省略号:等价于在所有中间维度使用切片 : ,并选取第三个维度中索引为 i 的切片。 选择所有实例所有任务点的第k个坐标 arr[..., 0] 形状: (3, 4)
选取所有任务的所有点的x坐标(同 arr[:, :, 0])。
arr[[i, j]] 花式索引:选取第一个维度中索引为 i 和 j 的子数组。 选择第i和第j个实例 arr[[0, 2]] 形状: (2, 4, 2)
选取第1个任务和第3个任务。
arr[arr > 5] 布尔索引:选取数组中所有满足条件 >5 的元素,并将其展平为一维数组。 arr[arr > 5] 形状: (n,)
n 是满足条件的元素总数。返回一个包含所有大于5的元素的一维数组。
posted @ 2025-09-19 12:19  Adoreeeee  阅读(8)  评论(0)    收藏  举报