2014-09-05 56 views
0

我有一些數據,表示爲numpy的陣列,具有序列看起來依稀像這樣:找到最後一個特定時間numpy的陣列有一個值

np.array([1, 0, 2, 5, 10, 6, 2, 0, 4, 1, 0, 1, 2, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0]) 

我想知道什麼位置這個數組的最後一個非零值 - 所以在這種情況下,發生在位置15的「2」。

什麼是最快和最簡單的方法?我可能會產生大量這樣的數據,所以我最初的計劃是迭代數組,刪除最後一個元素(如果它= 0),然後獲取結果數組的長度,這看起來可能太慢而不實用。

回答

5

可以使用nonzero功能 -

>>> arr1.nonzero()[0][-1] 
15 
4

隨着a爲您的數組,你可以使用np.where指定你正在尋找的條件:

>>> np.where(a != 0)[0][-1] 
15 

該函數返回一個給定的條件成立數組的索引(在這種情況下的指標所有不是0的元素)。 (實際上np.where(a != 0)返回包含該陣列,所以我們有[0]訪問它的一元組。)

[-1]是用於訪問可迭代對象的最後元件的熟悉的Python符號。

相關問題