numpy高级索引不正确的文档?

时间:2019-02-02 14:40:39

标签: python numpy

根据numpy doc

  

高级索引的定义意味着x [(1,2,3),]与x [(1,2,3)]根本不同。后者等效于x [1,2,3],它将触发基本选择,而前者将触发高级索引。确保了解为什么会发生这种情况。

  当选择对象obj是非元组序列对象,ndarray(数据类型为整数或布尔值)或具有至少一个序列对象的元组时,会触发

高级索引编制ndarray(数据类型为整数或布尔值)。高级索引有两种类型:整数和布尔值。


但是在我自己的测试中,即使对于tupple,如果它没有至少一个slice对象,一个np.newaxis或一个Ellipse对象,那么它将触发高级索引

import numpy as np

arr = np.zeros(shape=(5,5,5))
arr[(1,2,3)].flags.owndata       # evaluates to True


这是正确的行为吗?

1 个答案:

答案 0 :(得分:0)

In [5]: arr = np.zeros(shape=(5,5,5))

这是带有索引元组的基本索引:

In [6]: arr[(1,2,3)]
Out[6]: 0.0
In [7]: type(_)
Out[7]: numpy.float64

结果是一个项目,而不是数组(或数组的视图)。就是这样:

In [8]: arr[1,2,3]
Out[8]: 0.0
In [9]: type(_)
Out[9]: numpy.float64

像这样的标量numpy项始终具有自己的数据。我在回答有关is的最新问题时详细说明了这一点:

https://stackoverflow.com/a/54485031/901925