Numpy:使用值列表过滤非常大的数组的有效方法

时间:2015-07-23 13:54:18

标签: python numpy

假设我在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]

但这样做是否有一种更为繁琐的方式呢?

1 个答案:

答案 0 :(得分:4)

numpy.in1d就是这样做的。您的代码如下:

cut = N.in1d(my_array, sublist)
my_array = my_array[cut]