在用于高级索引的 NumPy 文档中,提到了
还要认识到这
x[[1, 2, 3]]
将触发高级索引,而x[[1, 2, slice(None)]]
将触发基本切片。
一个矩阵被顺序存储到内存中。我知道进行查看是有意义的,x[[1, 2, slice(None)]]
因为元素是按顺序存储到内存中的。但是为什么 Numpy 返回x[[1, slice(None), 2]]
or的视图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 如何处理内存寻址以创建这些视图