此问题已在此处有答案:
Finding contiguous regions in a 1D boolean array(6个回答)
昨天关门了。
晚上好
有没有一种有效的方法来获取布尔数组中True
值的所有开始和结束索引?假设我有这个数组:
x = np.array([nan, 11, 13, nan, nan, nan, 9, 3, nan, 3, 4, nan])
我使用np.isnan(x)
,得到:
[True, False, F, T, T, T, F, F, T, F, F, T]
我想在最后有一个数组或列表,只有NaN
-〉i的索引。如果是单个,则为一个索引,或者如果是连续的NaN
值,则为开始索引和结束索引:[0, [3, 5], 8, 11]
我必须自己在数组上循环并编写一个函数吗?或者有一种既简单又有效的方法吗?
我已经运行了一些东西,但由于我必须处理每个数组和多个数组的数十万个值,这需要时间。
2条答案
按热度按时间j0pj023g1#
您可以从
itertools
模块使用groupby
:输出:
cdmah0mi2#
您可以使用布尔运算将
np.isnan
输出在左/右移位:输出: