NumPy之 索引技巧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NumPy之 索引技巧相关的知识,希望对你有一定的参考价值。

参考技术A 一次性搞定NumPy入门基础知识
NumPy之操控ndarray的形状
NumPy之浅拷贝和深拷贝
NumPy之索引技巧

当被索引的ndarray是一维时,利用array做索引,相当于一次性从被索引对象中挑选出索引指定的所有元素,索引出的对象仍然是一个ndarray对象。

如果索引是多维的,那么检出的ndarray的shape和索引的形状一致,索引中的各个数字则分别代表了元素在被检索ndarray中的位置

当被索引对象是多维的,且只提供一个索引,那么索引中的每个数字所对应的元素是被索引对象的第一个维度。

如果被索引对象是多维的,并且想从被索引对象中进行多维检索,那么需要给出多组索引array,这个时候每个索引array对应被索引对象中的一个维度。需要注意,索引array的形状必须是一致的,因为必须使用这几个索引array的相同位置(构成了被索引对象的不同维度)来共同指定被索引对象中的某一个元素。

通常可以把上述 i 和 j 写成list的形式,来作为索引使用

注意不能将 i 和 j 组合成array进行使用,这样会被解释器认为是索引被索引对象的第一个维度:

下面的例子展示了多维数组索引的一个应用:

可以使用索引来进行赋值操作,但注意如果索引有重复,将以最后一次赋值为准:

上述内容使用整数作为索引,而当使用布尔值作为索引时,则是通过指定需要哪些内容,不需要哪些内容来实现的(True,False)。
下面的例子通过给出一个原始ndarray相同形状的索引来进行操作,非常直观:

这个性质经常应用在赋值操作里:

另外一种用法类似于上述的多维度索引:对于每个维度,提供一个一维的array,说明需要这个维度上的哪些元素。

需要注意,这里 b1 和 b2 的长度要分别与 a 的两个维度的长度一致。

ix() 函数的参数是N个一维数组,它可以生产一个组合索引出来,这个索引有N维,每个维度的长度为每个参数的长度,取值由每个一维数组具体的值来决定。

以上是关于NumPy之 索引技巧的主要内容,如果未能解决你的问题,请参考以下文章

Numpy之ndarray的查询和修改 - 索引和切片

花式索引的 Numpy 循环广播

数据分析之道-NumPynumpy切片与索引

python数据分析基础之Numpy库详解

python数据分析基础之Numpy库详解

Python数据分析之numpy学习