通过最小值和最大值快速过滤Python数组中的元素

时间:2016-09-05 20:08:26

标签: python arrays numpy

我有一个很大的numpy浮点数组(large_array,~2e7元素)。我需要生成一个新数组,过滤掉超出某些最小值和最大值的所有元素。

我可以用一个简单的方法来做到这一点:

import numpy as np
large_array = np.random.uniform(0., 10000., 20000000)
min_val, max_val = 500., 2700.
arr_f = []
for _ in large_array:
    if min_val <= _ <= max_val:
        arr_f.append(_)

但这需要很长时间。

如何加快速度?

1 个答案:

答案 0 :(得分:1)

试试这个:

In [18]: large_array.shape
Out[18]: (20000000,)

In [26]: new = large_array[(large_array >= min_val) & (large_array <= max_val)]

In [27]: new
Out[27]: array([  814.24315891,  1611.53346093,   624.31833231, ...,  1999.08383068,  2212.9825087 ,  1786.08963269])

In [28]: new.shape
Out[28]: (4400475,)