我有以下数组:
[1,1,1,1,1,1,nan,nan,nan,1,1,1,2,2,2,3,3]
我想在nan之后提取此数组中第一次出现的1
。我试过这个:
numpy.argmax(arr > numpy.nan)
答案 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数组。