删除数组中所需元素之间的不需要元素

时间:2017-04-27 23:09:38

标签: python arrays

我有一个可以简化为这样的数组:

a=[nan, 2, 1, 1, nan, nan, 3, nan, nan, 3, 4, 7, 8, 9, 8, 7, 7, nan, nan, nan, 3, 2, nan, 2]

我想保留元素3, 4, 7, 8, 9, 8, 7, 7 nan元素不会打扰我,因为它们没有显示在图形中,但我想过滤其余的值。

标准:没有纳米的最长序列

3 个答案:

答案 0 :(得分:2)

这是列表理解的绝佳场所。

语法如下:[x for x in my_list if condition()]

因此,假设您的条件为x is nan or x>=3

from math import isnan
filtered_list = [x for x in my_list if isnan(x) or x >=3]

请注意,nan表现异常:对于任何变量v(nan==v)==False . 请改用math.isnan

答案 1 :(得分:2)

自问题澄清以来进行了大量编辑。

要获得最长的序列,您可以使用groupbymax

>>> from itertools import groupby
>>> from math import isnan

>>> nan = float('NaN')

>>> a = [nan, 2, 1, 1, nan, nan, 3, nan, nan, 3, 4, 7, 8,
...      9, 8, 7, 7, nan, nan, nan, 3, 2, nan, 2]

>>> max((list(group) for key, group in groupby(a, key=isnan)), key=len)
[3, 4, 7, 8, 9, 8, 7, 7]

答案 2 :(得分:-1)

你可以试试

     a = a[9:-7]

在您当前的代码之后......

请参阅Colon (:) in Python list index了解