numpy索引文档中的错误示例?

时间:2018-06-11 16:27:43

标签: python numpy numpy-ndarray

在numpy索引page上,有一个警告段落

  

高级索引的定义意味着x [(1,2,3),]与x [(1,2,3)]根本不同。后者相当于x [1,2,3],它将触发基本选择,而前者将触发高级索引。一定要明白为什么会这样。

我尝试运行以下代码

import numpy as np

x = np.arange(3*4).reshape((3, 4))
y = x[(1, 2)]
z = x[(1, 2),]

print("base:", x.base, y.base, z.base)
print("id:", id(x.base), id(y.base), id(z.base))
print(np.shares_memory(x, y), np.shares_memory(x, z))

并将结果作为

base: [ 0  1  2  3  4  5  6  7  8  9 10 11] None None
id: 4299634928 4297628200 4297628200
False False

似乎y没有返回view,因此x[(1, 2)]无法成为基本索引,因为

  

基本切片生成的所有数组始终是原始数组的视图。

文档中的错误是什么?或者我误解了某个地方?

1 个答案:

答案 0 :(得分:2)

y不是视图,因为它是标量,而不是数组。基本切片生成的所有数组始终是原始数组的视图。