我有以下数组:
[1,1,1,1,1,1,nan,nan,nan,1,1,1,2,2,2,3,3]
我想从这个数组中的nan后面提取第一个出现的1
。我尝试了以下代码:
numpy.argmax(arr > numpy.nan)
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数组。