如何基于其中一个数组的条件同步筛选两个NumPy数组
Python Numpy 双数组同步筛选实现
编辑:我修正了y数组,现在x、y长度一致
问题描述
我对编程不太了解,但有大量数据需要用Python分析。假设我有如下两个数组:
import numpy as np x = np.array([1,2,3,4,5,6,7,8,9,10]) y = np.array([25,18,16,19,30,5,9,20,80,45])
我需要筛选出y中大于17的数值,同时保留x中与y筛选后剩余数值索引相同的对应值。比如删除y中不满足条件的某个值,就要同步删除x中相同索引位置的对应值。
我尝试过如下写法,但不知道怎么同步过滤x对应的数值(实际数据的数组长度非常大,几乎不可能手动处理):
filter = np.where(y>17, 0, y)
解决方案
参考@mozway的提示,在x、y长度一致的前提下,直接使用numpy的布尔索引特性即可实现双数组的同步筛选,所需代码如下:
import numpy as np x = np.array([1,2,3,4,5,6,7,8,9,10]) y = np.array([25,18,16,19,30,5,9,20,80,45]) # 按y>17的条件同步筛选x和y x_filtered = x[y > 17] y_filtered = y[y > 17]
内容的提问来源于stack exchange,提问作者Dvir Cohen
相关产品推荐
相关产品推荐

