2015-03-26 3 views
0

У меня есть 2D-массив значений, и я бы хотел найти индексы, значения которых составляют более 60% от максимального значения. Я пробовал:Найти индексы значений, удовлетворяющих условию в массиве 2d numpy

: nmax, nmin = np.amax((n[:,:])),np.amin((n[:,:])) 
: np.unravel_index(n[n>0.6*nmax], n.shape) 

Но я получаю ошибку:

TypeError: Iterator operand 0 dtype could not be cast from dtype('>f4') to dtype('int64') according to the rule 'same_kind' 

Любое понимание будет оценено.

+2

Вы попробовали [numpy.where] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html#numpy.where)? – wwii

ответ

0

Как уже упоминалось выше, использование np.where(), как это:

x = np.random.randint(0,50,(20,20)) 
    y = np.where(x>0.6*np.max(x)) 

у будет дано как кортеж с двумя массивами, представляющими две оси массива и вы можете использовать у, однако необходимо для пример x [y] вернет значения x, все из которых будут больше 0,6 * max.

Смежные вопросы