假设我在numpy()中操作了一大堆int
s。我想用它的值sublist
的子列表来过滤它。由于阵列非常大,看起来我需要聪明才能以最快的方式完成。
例如:
my_array = N.random.randint(size=1e10)
sublist = [4,7,9]
#core where I extract the values of my_array equal to 4, 7 or 9
我想过:
cut = N.zeros((len(my_array)),dtype=bool)
for val in sublist:
cut = cut | (my_array == val)
my_array = my_array[cut]
但它必须解析数组len(sublist)
的时间量。
仍然是手动:
cut = N.array([value in sublist for value in my_array])
my_array = my_array[cut]
但这样做是否有一种更为繁琐的方式呢?
答案 0 :(得分:4)
numpy.in1d
就是这样做的。您的代码如下:
cut = N.in1d(my_array, sublist)
my_array = my_array[cut]