我有一些NaN
值的numpy的數組:甲屏蔽數組索引問題
arr = [ 0, NaN, 2, NaN, NaN, 5, 6, 7 ]
使用一些邏輯(問題範圍之外),I生成的NaN位置的掩模:
mask = [ True, False, True, False, False, True, True, True ]
我用這個面具只選擇有效的數據:
valid_arr = arr[mask] # [ 0, 2, 5, 6, 7 ]
我然後執行任意algorith米,在這種新的數組選擇幾個indeces
:
indeces = myAlgo(valid_arr) # [ 1, 3 ]
所述有效陣列中的indeces
是1,3-(對應於值2和6)。我需要知道在原始數組(arr
)中這些對應的indeces
這些對應於。在上面的例子中,這顯然是2和6。
該數組是時間序列數據,未排序。一種解決方案是遍歷mask
,只有在找到有效數字時才遞增計數器。這可以使用numpy更有效地完成嗎?
我對這是如何工作有點困惑。基於numpy文檔,'flatnonzero(a)返回扁平版本a中非零的索引。我認爲這也適用於True/False遮罩陣列? –
它的確如此。在這裏,「True」被視爲1並且「False」被視爲0,就像大多數情況下隱式類型轉換髮生時一樣。 – Psidom
啊,我明白了......它包含了與原始數組對應的indeces!優秀! –