本文主要解释了如何根据给定的索引对一维数组进行反选的操作。
以下文数据为例
import numpy as np
data = np.array([ 0.93825827, 0.26701143, 0.99121108, 0.35582816, 0.90154837, 0.86254049, 0.83149103, 0.42222948, 0.27309625, 0.38925281]
)
如果我们给定一个阈值比如0.5来筛选数值,我们可以通过以下操作来选取相应的项
greater_than_05 = data[data>0.5]
less_than_05 = data[data<=0.5]
print("greater_than_05 : \n", greater_than_05)
print("less_than_05 : \n", less_than_05)
输出结果如下 :
greater_than_05 :
[0.93825827 0.99121108 0.90154837 0.86254049 0.83149103]
less_than_05 :
[0.26701143 0.35582816 0.42222948 0.27309625 0.38925281]
那么在更加复杂的情况下,例如,我们给出索引sample_indexes = [0,1,2],如何反选剩下的项呢。首先我们需要知道的就是,npy数组是可以使用bool型的索引的,当bool型索引数组的长度与目标len(data)相同时,我们就会从data中选出对应索引数组中所有True对应的项。下面用一个简单的例子解释 :
sample_indexes=[0,1,2]
mask = np.ones(len(data), np.bool)
mask[sample_indexes] = False
print("mask :\n",mask)
other_data = data[mask]
print("other_data : \n",other_data)
输出结果如下 :
mask :
[False False False True True True True True True True]
other_data :
[0.35582816 0.90154837 0.86254049 0.83149103 0.42222948 0.27309625
0.38925281]
其中我们首先创建一个与目标1D数组长度相同的bool型数组,将sample_index对应的改为false,之后就可以通过剩下的mask索引来反选出其他的数据了。