我有一些代碼試圖在另一個指定的索引處查找數組的內容,這可能會指定超出前一個數組範圍的索引。在numpy中使用蒙版數組進行索引
input = np.arange(0, 5)
indices = np.array([0, 1, 2, 99])
我想要做的是這樣的: 打印輸入[索引] 並獲得 [0 1 2]
但是這會產生一個異常(如預期):
IndexError: index 99 out of bounds 0<=index<5
所以我想我可以使用蒙版陣列來隱藏超出範圍的索引:
indices = np.ma.masked_greater_equal(indices, 5)
但還是:
>print input[indices]
IndexError: index 99 out of bounds 0<=index<5
即使:
>np.max(indices)
2
所以我不得不填補屏蔽數組第一,這是煩人的,因爲我不知道我可以用什麼填補值不選擇那些超出範圍的所有索引:
打印輸入[np.ma.filled(指數,0)]
[0 1 2 0]
所以我的問題是:如何有效地使用numpy從數組中安全地選擇索引而不會越過輸入數組的邊界?
D'oh的工作。我仍然很好奇爲什麼我們不能正確地使用掩碼數組進行索引,但我想這並不重要。 – Widjet 2010-10-04 23:50:30