2016-02-18 4 views
1

Я пытаюсь получить значения из ndarray с индексами в другом ndarray, но я получаю эту ошибкуIndexError при оценке ndarray с индексами в другом ndarray

IndexError слишком много индексов для массива.

массив, который я пытаюсь получить значения из, scores, имеет scores.shape = (10,10000) и массив, указав, индексы, indices, имеет indices.shape = (10000,2)

Я пытаюсь получить значения таким образом, :

values = scores[tuple(indices)] 

, но здесь я получаю сообщение об ошибке.

То, что я пытаюсь сделать таким образом, - это доступ к нескольким индивидуальным значениям баллов, например. scores[0,6], scores[1,9] в другой массив таким образом я получаю что-то вроде

[scores[0,6],scores[1,9],...] 

все на одном дыхании и избегая петли. Эти [[0,6] , [1,9], ...] хранятся в массиве индексов. Я упоминаю предыдущее, если это может привести к обходу.

ответ

2

Попробуйте следующее: scores[indices[:,0],indices[:,1]]. Или, альтернативно, scores[tuple(indices.T)].

Когда вы делаете scores[tuple(indices)], tuple(indices) создает набор двухэлементных массивов. Numpy интерпретирует это, когда вы пытаетесь получить 2 элемента массива размером 10 000! Для нужного индексации Numpy ожидает массивы значений для каждого измерения. Другими словами, вместо ([x1,y1], [x2,y2]) он хочет ([x1,x2], [y1, y2]).

+0

Последняя строка, которую вы написали, так сильно осветила меня! Спасибо @cge;) –

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