NumPy - 高级索引
-
简述
可以从作为非元组序列的 ndarray、整数或布尔数据类型的 ndarray 对象或具有至少一项为序列对象的元组中进行选择。高级索引始终返回数据的副本。与此相反,切片仅呈现视图。有两种类型的高级索引 -Integer和Boolean. -
整数索引
这种机制有助于根据数组的 N 维索引选择数组中的任意项。每个整数数组表示该维度的索引数。当索引由与目标 ndarray 的维度一样多的整数数组组成时,它就变得简单了。在以下示例中,从 ndarray 对象的每一行中选择指定列的一个元素。因此,行索引包含所有行号,列索引指定要选择的元素。示例 1
它的输出如下 -选择包括来自第一个数组的 (0,0)、(1,1) 和 (2,0) 处的元素。在以下示例中,选择了放置在 4X3 数组角上的元素。选择的行索引是 [0, 0] 和 [3,3],而列索引是 [0,2] 和 [0,2]。示例 2
该程序的输出如下 -结果选择是一个包含角元素的 ndarray 对象。高级索引和基本索引可以通过使用一个切片 (:) 或省略号 (...) 与索引数组进行组合。以下示例对行使用切片,对列使用高级索引。当 slice 用于两者时,结果是相同的。但是高级索引会导致复制,并且可能具有不同的内存布局。示例 3
该程序的输出如下 - -
布尔数组索引
当结果对象是布尔运算(例如比较运算符)的结果时,使用这种类型的高级索引。示例 1
在此示例中,大于 5 的项目将作为布尔索引的结果返回。该程序的输出将是 -示例 2
在此示例中,使用 ~(补码运算符)省略了 NaN(非数字)元素。它的输出将是 -示例 3
以下示例显示如何从数组中过滤掉非复杂元素。在这里,输出如下 -