所以,我创建了一个 numpy 数组:
a = np.arange(25).reshape(5,5)
array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24]])
传统切片a[1:3,1:3]
返回
array([[ 6, 7], [11, 12]])
就像在第二个中使用列表一样a[1:3,[1,2]]
array([[ 6, 7], [11, 12]])
但是,a[[1,2],[1,2]]
返回
array([ 6, 12])
显然我不明白这里的一些东西。也就是说,使用列表进行切片有时可能非常有用。
干杯,
坑
最佳答案
您观察到了所谓的Advanced Indexing的效果。让我们考虑一下链接中的示例:
import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
print(x)
[[1 2]
[3 4]
[5 6]]
print(x[[0, 1, 2], [0, 1, 0]]) # [1 4 5]
您可能会认为这是提供网格(笛卡尔)坐标列表,如
print(x[0,1]) # 1
print(x[1,1]) # 4
print(x[2,0]) # 5
关于python - 用列表切片数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59740566/