我有很长的元组列表 , 并且想要使用Python删除其中包含 nan 的任何元组 .
我目前所拥有的:
???x = [ ( ‘记录开始’ ,0 ) , ( nan,4 ) , ( nan,7 ) , … , ( ‘事件标记 1 ’ ,150 ) ]
结果我正在寻找:
??x = [ ( ‘录制开始’ ,0 ) , ( ‘事件标记 1 ’ ,150 ) ]
我尝试使用 np.isnan 及其变体 , 但没有成功 , 并不断出现错误:输入类型不支持 ufunc ’ isnan ’ , 并且根据输入 , 不能安全地将输入强制转换为任何受支持的类型强制转换规则 " 安全 "
任何建议 , 将不胜感激!!
最佳答案
您可以使用列表推导来检查元组中的任何项目是否为 NaN. 首先检查类型 , 然后使用math.isnan进行检查 , 因为它不适用于其他类型:
import mathx = [ ( 'Recording start', 0 ) , ( float ( 'nan' ) , 4 ) , ( float ( 'nan' ) , 7 ) , ( 'Event marker 1', 150 ) ] res = [ t for t in x if not any ( isinstance ( n, float ) and math.isnan ( n ) for n in t ) ] print ( res )
输出:
[ ( 'Recording start', 0 ) , ( 'Event marker 1', 150 ) ]
原网页已经由 ZAKER 转码以便在移动设备上查看