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

时间:2016-01-25 01:16:08

标签: python numpy pandas

我有以下数组:

[1,1,1,1,1,1,nan,nan,nan,1,1,1,2,2,2,3,3]

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

numpy.argmax(arr > numpy.nan)

1 个答案:

答案 0 :(得分:5)

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

np.where之后,0返回包含NaN的元素的索引。然后-1给出最后一个NaN索引。然后在其中添加一个以查找最后一个NaN之后元素的索引。

在您的示例数组中,它生成一个9

的索引

然后,您可以再次使用np.where从索引9开始查找前1个。

总而言之:

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

请注意,您的示例似乎是一个列表。我假设你把它变成了一个numpy数组。