如何识别 numpy 矩阵中仅包含 NaN 的行的索引?

How to identify the index of a row containing only NaNs in a numpy matrix?

我有一个二维 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]])

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

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

知道如何实现吗?谢谢!

你很接近!您可以沿轴使用 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