# 创建一个形状为 (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的元素的一维数组。 |