📅  最后修改于: 2023-12-03 14:46:11.893000             🧑  作者: Mango
在 Python 中,省略号(...)可以作为索引使用。这个特殊的索引用于切片和扩展切片。
使用省略号作为索引时,可以在切片中使用多个省略号,表示在该位置展开所有的维度。例如,假设我们有一个 3 x 3 x 3
的数组 arr
:
import numpy as np
arr = np.random.randint(0, 10, size=(3, 3, 3))
print(arr)
输出为:
[[[5 5 5]
[8 5 1]
[9 7 7]]
[[5 8 5]
[5 5 5]
[2 8 5]]
[[9 9 4]
[4 4 7]
[2 4 7]]]
我们可以使用省略号来表示展开前两个维度:
sliced_arr = arr[..., 1]
print(sliced_arr)
输出为:
[[5 5 7]
[8 5 8]
[9 7 4]]
这相当于使用 arr[:, :, 1]
来取得 arr
在第三维上索引为 1
的部分。
使用省略号作为索引时,还可以在扩展切片中使用多个省略号。例如,假设我们有一个 2 x 2 x 2 x 2
的数组 arr
:
arr = np.random.randint(0, 10, size=(2, 2, 2, 2))
print(arr)
输出为:
[[[[0 1]
[6 7]]
[[8 0]
[0 9]]]
[[[7 6]
[8 7]]
[[1 1]
[2 2]]]]
我们可以使用两个省略号和两个整数来表示展开第一个和第三个维度:
sliced_arr = arr[:, :, ..., 0]
print(sliced_arr)
输出为:
[[[0 6]
[8 0]]
[[7 8]
[1 2]]]
这相当于使用 arr[:, :, :, :, 0]
来取得 arr
在第一维和第三维上的所有部分,并取出其中索引为 0
的元素。
使用省略号作为索引,可以简化代码并增加可读性。