2017-01-12 54 views
1

我有一個具有小範圍不同值的2d numpy數組。我想檢索一個隨機索引,但具有特定的值。例如,說這是數組:檢索具有特定值的numpy數組中的隨機項的索引

arr = [[1,2,1,1,3], 
     [4,3,4,1,1], 
     [2,3,1,2,1], 
     [1,2,1,1,2], 
     [3,1,3,4,2]] 

我想隨機索引的任何值是1,例如(2,2)。到目前爲止,我能做到這一點的唯一方法是取任意一個隨機索引,然後檢查它是否包含我想要的值,然後在沒有的情況下重繪。這對於上面的例子來說可以,但我需要從大數組中檢索許多隨機索引。

有沒有我描述的過程的方法或算法?

這個的應用是提供分類圖像的隨機像素來執行準確性評估。

+1

'np.argwhere(ARR == 1)'? – Divakar

回答

4

您轉換您的列表到numpy.array,然後隨機選擇從np.argwhere結果一個座標:

import numpy as np 
import random 
random.choice(np.argwhere(np.array(arr)==value))