使用lambda函数计算数字无值

我有一个由一堆值组成的数组,其中一些是Nan,其他是None。我想数一数。我可以通过一个简单的for循环来实现,如图所示,

xx = np.array([2,3,4,None,np.nan,None])

count_None = 0
count_nan = 0
for i in xx:
    if i is None:
        count_None =+ 1
    if i is np.nan:
        count_nan =+ 1

我想找出我是否可以在一行中达到相同的结果,也许可以使用lambda函数。我试图这样写。但是,当然,语法不正确。有任何想法吗?

lambda xx: count_None =+1 if xx is None 
评论
  • pnon
    pnon 回复

    这不是一个lambda,但它会创建一个仅包含None值的新列表,并计算该列表的长度。

    import numpy as np
    xx = np.array([2,3,4,None,np.nan,None])
    print(len([elem for elem in xx if elem is None]))
    

    如果您不需要使用numpy,则可以使用数组计数功能

    xx = [2,3,4,None,np.nan,None]
    print(xx.count(None))
    
  • 上个路口
    上个路口 回复

    一种实现它的一种方法是:

    len([i for i in xx if i is None])
    # or the count function
    xx.count(None)
    

    or you can use the numpy.count_nonzero:

    np.count_nonzero(xx == None)