我有一个带有一些NaN
值的numpy数组:
arr = [ 0, NaN, 2, NaN, NaN, 5, 6, 7 ]
使用一些逻辑(问题范围之外),我生成了一个NaN位置的掩码:
mask = [ True, False, True, False, False, True, True, True ]
我使用此掩码仅选择有效数据:
valid_arr = arr[mask] # [ 0, 2, 5, 6, 7 ]
然后我执行一个任意算法,在这个新数组中选择几个indeces
:
indeces = myAlgo(valid_arr) # [ 1, 3 ]
有效数组中的indeces
是1,3(对应于值2和6)。我需要知道这些indeces
对应于原始数组中的(arr
)。在上面的例子中,这显然是2和6。你知道吗
数组是时间序列数据,没有排序。一种解决方案是迭代mask
,仅当找到有效数字时才递增计数器。使用numpy可以更有效地实现这一点吗?你知道吗
您可以创建一个索引数组(使用^{} ),然后屏蔽该数组,最后使用advanced indexing using an integer array获取相应的项:
可以展平从原始数组返回索引的掩码,然后使用新索引来子集掩码索引:
相关问题 更多 >
编程相关推荐