【问题标题】:How to identify the index of a row containing only NaNs in a numpy matrix?如何识别 numpy 矩阵中仅包含 NaN 的行的索引?
【发布时间】:2021-06-10 16:25:11
【问题描述】:

我有一个看起来像这样的二维 numpy 矩阵:

array = np.array([[nan, nan, 5.1, nan, nan],
                  [nan, 3.2, 1.7, 9.9, nan],
                  [nan, nan, nan, nan, nan], 
                  [nan, nan, nan, nan, nan], 
                  [nan, nan, nan, nan, nan]])

我想确定矩阵中包含only nans 的第一行的索引。 (在这种情况下,该索引将为 2。)但我不知道该怎么做。

我知道我可以使用 np.argwhere(np.isnan(array)) 找到 所有 nans 的索引,但这并不是我想要的。

关于如何实现这一点的任何想法?谢谢!

【问题讨论】:

    标签: python numpy indexing row nan


    【解决方案1】:

    你已经接近了!您可以沿轴使用np.all(或np.array 方法all)来查找全部为nan 的条目,例如

    import numpy as np
    nan = np.nan
    a = np.array([[nan, nan, 5.1, nan, nan],
                  [nan, 3.2, 1.7, 9.9, nan],
                  [nan, nan, nan, nan, nan],
                  [nan, nan, nan, nan, nan],
                  [nan, nan, nan, nan, nan]])
    np.argwhere(np.isnan(a).all(axis=1))
    

    会给你

    array([[2],
           [3],
           [4]])
    

    您还可以在此处使用argmax 的技巧来找到True 所在的第一行

    np.isnan(a).all(axis=1).argmax()
    

    会给

    2
    

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2019-03-31
      相关资源
      最近更新 更多