numpy 中的ndarray数组返回符合特定条件的索引方法
来源:互联网 发布:大数据概念板块 编辑:程序博客网 时间:2024/05/24 20:08
在numpy的ndarray类型中,似乎没有直接返回特定索引的方法,我只找到了where函数,但是where函数对于寻找某个特定值对应的索引很有用,对于返回一定区间内值的索引不是很有效,至少我没有弄明白应该如何操作。下面先说一下where函数的用法吧。
(1)where函数的使用场景:
例如现在我生成了一个数组:
现在arr是一个含有18个元素的ndarray类型的数组,后面就用数组来称呼它吧。假如我想返回数组中所有元素值为3所对应的索引位置,那么通过where函数可以很轻松地完成。
它会返回一个包含所有值为3对应的索引位置的元组,如下图:
可以看到在索引为5、9、14的地方所对应的元素值为3。通过这样的方式可以轻松达到目的。但是对于一定变化范围内的索引这样就不行了。下面的方法是自己想出来的折衷办法,比较笨,高手清喷。
(2)通过一个辅助的数组来解决一定范围内值索引的查找
我们建一个标识元素索引的数组,然后通过它来显示符合条件的元素对应的索引。还是刚才的数组,假如我现在要返回元素值在3到100之间值的索引。我可以生成一个和arr相同大小的数组,然后首先通过一次筛选找到大于3的元素对应索引的数组,继而在其中再次筛选,最终得到想要的结果。代码如下:
下面看一下执行的效果:
可以看到程序将所有介于3和100之间的元素对应的索引值打了出来,如果想同时获得索引值和相应的元素,只需将上面的“print c[i]”, 替换为 “print c[i],arr[c[i]]”即可。
当然这种方法也适用于选择某个特定值对应的索引,例如我想找到所有3对应的位置,可以用print b[arr==3]即可打印出所有值为3的元素所对应的索引。其实不论怎么做,都是用到了数组进行关系运算后生成布尔数组,然后让数组中为True的地方进行显示。
当然还可以通过两次进行筛选,分别筛选出大于3的元素和小于100的元素对应的索引数组,然后两个数组做交集处理,在numpy中有一个intersect1d函数可以进行这样的运算,但是仍然麻烦。目前只能想到这些办法,不知道有哪位高手有更好的方法,欢迎大家一起交流一下。
- numpy 中的ndarray数组返回符合特定条件的索引方法
- numpy 中的ndarray数组返回符合特定条件的索引方法
- numpy 中的ndarray数组返回符合特定条件的索引方法
- Python: NumPy中的多维数组ndarray
- Python: NumPy中的多维数组ndarray
- Numpy : ndarray切片索引
- numpy中的ndarray方法和属性
- numpy中的ndarray方法和属性
- numpy中的ndarray方法和属性
- numpy中的ndarray方法和属性
- numpy中的ndarray方法和属性
- numpy中的ndarray方法和属性
- 查找出数组中符合某一条件的数组索引
- numpy ndarray 按条件筛选数组,关联筛选
- numpy ndarray 数组对象
- numpy-数组对象ndarray
- Numpy ndarray数组切片
- numpy中的ndarray对象
- 自定制ProgressView
- 如何把字符串转换成整数
- volatile关键字详解
- MyBatis拦截器分页原理及PageHelper分页插件教学
- jni异常,c++抛出异常,java捕获
- numpy 中的ndarray数组返回符合特定条件的索引方法
- 【转】UsbAccessory和UsbDevice的区别
- unity MeshCollider组件
- 扎心了!论虐狗我只服UI设计师!
- 基础知识之strcpy、strcmp、strcat
- jquery添加新元素
- java系统高并发解决方案
- node
- NYIST—2017年第十届河南省大学生程序设计竞赛选拔赛—个人赛总结