【发布时间】:2018-11-12 16:43:21
【问题描述】:
在advanced indexing 的 NumPy 文档中提到
还要认识到
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]
标签: python numpy indexing numpy-ndarray numpy-slicing