提取numpy数组中紧随nan后的第一个出现值

3

我有以下数组:

[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个回答

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数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接