2017-01-12 55 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))