【问题标题】:numpy advanced indexing inaccurate documentation?numpy 高级索引不准确的文档?
【发布时间】:2019-02-02 14:40:38
【问题描述】:

根据numpy doc

高级索引的定义意味着 x[(1,2,3),] 与 x[(1,2,3)] 根本不同。后者相当于 x[1,2,3] 将触发基本选择,而前者将触发高级索引。请务必了解发生这种情况的原因。

在选择对象,obj是非元组序列对象,ndArray(数据类型整数或bool)或至少一个序列对象的元组或ndarray(数据类型为整数或布尔值)。高级索引有两种类型:整数和布尔值。


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

import numpy as np

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


这是正确的行为吗?

【问题讨论】:

  • arr[1,2,3] 是一个单一元素,一个np.float64 对象。

标签: python numpy


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多