Numpy: конвертировать индекс в одном измерении во многие измерения - PullRequest
4 голосов
/ 15 января 2010

Многие методы массива возвращают один индекс, несмотря на тот факт, что массив является многомерным. Например:

a = rand(2,3)
z = a.argmax()

Для двух измерений легко найти индексы матрицы максимального элемента:

a[z/3, z%3]

Но для большего количества измерений это может стать раздражающим. Есть ли у Numpy / Scipy простой способ вернуть индексы в нескольких измерениях по индексу в одном (свернутом) измерении? Спасибо.

Ответы [ 2 ]

6 голосов
/ 15 января 2010

Понял!

a = X.argmax()
(i,j) = unravel_index(a, X.shape)
1 голос
/ 15 января 2010

Я не знаю встроенной функции, которая делает то, что вы хотите, но где это произошло для меня, я понял, что я действительно хотел сделать это:

с учетом 2 массивовa, b той же формы, найдите элемент b, который находится в той же позиции (то же положение [i, j, k ...]), что и максимальный элемент a

. Для этогорешение numpy-ish:

j = a.flatten().argmax()
corresponding_b_element = b.flatten()[j]

Винс Маркетти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...