x[[1, 2, 3]]
会触发高级索引,而x[[1, 2, slice(None)]]
会触发基本切片。矩阵是按顺序存储在内存中的。我理解为创建
x[[1, 2, slice(None)]]
的视图是有意义的,因为元素按顺序存储在内存中。但是为什么Numpy返回x[[1, slice(None), 2]]
或x[[slice(None), 1, 2]]
的视图呢?例如,假设:x = [[[ 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, 25, 26]]]
x[[1,slice(None),2]]
返回一个视图[11,14,17]
,它在内存中不是按顺序存储的,对于x[[slice(None),1,2]]
也是如此,返回[5,14,23]
。
我想知道:
为什么NumPy在这两种情况下甚至会返回一个视图
NumPy如何处理内存寻址以创建这些视图
x[[slice(None), 1, 2]]
已经在1.15版本中被弃用,应该改为x[slice(None), 1, 2]
。 - Eric