numpy ndarray 按条件筛选数组,关联筛选的例子
最近的项目中大量涉及数据的预处理工作,对于ndarray的使用非常频繁。其中ndarray如何进行数值筛选,总结了几种方法。
1.按某些固定值筛选
如下面这段代码从,ndarray中可以筛选出数值等于3的子数组和其在原数组中的索引位置。
importnumpyasnp arr=np.array([1,1,1,134,45,3,46,45,65,3,23424,234,12,12,3,546,1,2]) print(np.where(arr==3)) print(arr[np.where(arr==3)]) Output: (array([5,9,14],dtype=int32),) [333]
2.按多个固定值筛选
按上述方法筛选多个固定值也是可行的,将不同条件用括号括起来,之间打|即可。
importnumpyasnp arr=np.array([1,1,1,134,45,3,46,45,65,3,23424,234,12,12,3,546,1,2]) print(np.where((arr==3)|(arr==1))) print(arr[np.where((arr==3)|(arr==1))]) Output: (array([0,1,2,5,9,14,16],dtype=int32),) [1113331]
3.按范围筛选
除了按固定值,我们还可以按一定的范围进行筛选
importnumpyasnp arr=np.array([1,1,1,134,45,3,46,45,65,3,23424,234,12,12,3,546,1,2]) print(np.where(arr>3)) print(arr[np.where(arr>3)]) Output: (array([3,4,6,7,8,10,11,12,13,15],dtype=int32),) [13445464565234242341212546]
如果不需要index,还可以有更快的方法
importnumpyasnp arr=np.array([1,1,1,134,45,3,46,45,65,3,23424,234,12,12,3,546,1,2]) print(arr[arr>3]) Output: [13445464565234242341212546]
那为什么还需要用np.where呢?因为索引可以满足不同数组间的筛选,比如有a,b两个数组我们需要筛选出所有a==0的b时即可使用np.where函数。
importnumpyasnp a=np.array([0,0,1,1,0,1,1,0,1]) b=np.arange(len(a)) print(a) print(b) print(b[np.where(a==0)]) Output: [001101101] [012345678] [0147]
以上这篇numpyndarray按条件筛选数组,关联筛选的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。