【发布时间】:2020-06-19 05:15:15
【问题描述】:
使用包含一些缺失值的列表,例如:
[10, 11, 12,np.nan, 14, np.nan, 16, 17, np.nan, 19, np.nan]
如何对位于两个缺失 (nan) 值之间的值进行子集化?
我知道如何使用 for loop 来做到这一点:
# imports
import numpy as np
# input
lst=[10,11,12,np.nan, 14, np.nan, 16, 17, np.nan, 19, np.nan]
# define an empty list and build on that in a For Loop
subset=[]
for i, elem in enumerate(lst):
if np.isnan(lst[i-1]) and np.isnan(lst[i+1]):
subset.extend([elem])
print(subset)
# output
# [14, 19]
关于如何以不那么繁琐的方式执行此操作的任何建议?
【问题讨论】:
-
你已经在使用枚举,所以你知道索引,它在 i 中,所以只需使用 elem 的那个 instaed
-
@ChrisDoyle 感谢您的回复。我希望列表理解或一些矢量化方法可以加快更大列表的速度
-
啊,好吧,永恒已经给出了一个列表理解示例
-
所以对于
lst = [1, np.nan],你想要的输出是[1]? -
对于
lst = [np.nan]来说崩溃没关系?
标签: python python-3.x list numpy