首页 > 解决方案 > How can I get all the index of all the NaNs of a list?

问题描述

I am trying to make a list with the index of all NaNs in the list a.

The problem is that the list ind doesn't fill with anything. It works if instead of NaN, I put a random string like c.

import numpy as np

a=[1, 2, 3, 4, np.nan, np.nan, 2, np.nan]

ind=[]
for i in range(0,len(a)):

    if a[i]==float("NaN"):
        ind.append(i)
print ind

标签: pythonnumpynan

解决方案


使用 np.nan 进行比较

import numpy as np

a=[1,2,3,4,np.nan,np.nan,2,np.nan]

ind=[]
for i in range(0,len(a)):
    if a[i] is np.nan:
        ind.append(i)
print ind

输出

[4, 5, 7]

使用列表理解:

[x  for x in range(0,len(a)) if a[x] is np.nan]

或者,如果您使用 numpy 函数构建了数组,则np.isnan(a[i])用于比较。


推荐阅读