提取nan后面的numpy数组中的第一个匹配项

use*_*827 3 python numpy pandas

我有以下数组:

[1,1,1,1,1,1,nan,nan,nan,1,1,1,2,2,2,3,3]
Run Code Online (Sandbox Code Playgroud)

我想提取1此数组在nan之后的第一次出现。我尝试了这个:

numpy.argmax(arr > numpy.nan)
Run Code Online (Sandbox Code Playgroud)

tim*_*mbo 5

np.where(np.isnan(foo))[0][-1] + 1

在之后np.where,0返回包含NaN的元素的索引。然后-1为您提供最后的NaN索引。然后向其添加一个,以找到最后一个NaN之后元素的索引。

在您的示例数组中,它产生的索引为9

然后可以再次使用np.where从索引9开始查找第一个。

总共:

afternan = np.where(np.isnan(foo))[0] [-1] + 1
np.where(foo [afternan:] == 1)[0] [0]

请注意,您的示例似乎是一个列表。我假设您将其转换为一个numpy数组。