How to get the indices list of all NaN value in numpy array?

后端 未结 3 649
一个人的身影
一个人的身影 2020-12-02 10:56

Say now I have a numpy array which is defined as,

[[1,2,3,4],
[2,3,NaN,5],
[NaN,5,2,3]]

Now I want to have a list that contains all the ind

相关标签:
3条回答
  • 2020-12-02 11:40

    np.isnan combined with np.argwhere

    x = np.array([[1,2,3,4],
                  [2,3,np.nan,5],
                  [np.nan,5,2,3]])
    np.argwhere(np.isnan(x))
    

    output:

    array([[1, 2],
           [2, 0]])
    
    0 讨论(0)
  • 2020-12-02 11:42

    You can use np.where to match the boolean conditions corresponding to Nan values of the array and map each outcome to generate a list of tuples.

    >>>list(map(tuple, np.where(np.isnan(x))))
    [(1, 2), (2, 0)]
    
    0 讨论(0)
  • 2020-12-02 11:50

    Since x!=x returns the same boolean array with np.isnan(x) (because np.nan!=np.nan would return True), you could also write:

    np.argwhere(x!=x)
    

    However, I still recommend writing np.argwhere(np.isnan(x)) since it is more readable. I just try to provide another way to write the code in this answer.

    0 讨论(0)
提交回复
热议问题