Как мне сделать индексирование этого массива в NumPy - PullRequest
5 голосов
/ 10 января 2012

Учитывая массив индексов I, как мне установить значения массива данных D, индексы которого не существуют в I?

Пример: Как мне получить A из I и D?

I = array( [[1,1], [2,2], [3,3]] )

D = array( [[ 1, 2, 3, 4, 5, 6],
            [ 7, 8, 9, 1, 2, 3],
            [ 4, 5, 6, 7, 8, 9],
            [ 1, 2, 3, 4, 5, 6],
            [ 7, 8, 9, 1, 2, 3]] )

A = array( [[ 0, 0, 0, 0, 0, 0],
            [ 0, 8, 0, 0, 0, 0],
            [ 0, 0, 6, 0, 0, 0],
            [ 0, 0, 0, 4, 0, 0],
            [ 0, 0, 0, 0, 0, 0]] )

Редактировать: я ищу, как сделать это одним выстрелом для случаев, когда I и d большие.

1 Ответ

10 голосов
/ 10 января 2012

Простое решение:

A = zeros(D.shape)
for i, j in I:
    A[i, j] = D[i, j]

Векторизация:

A = zeros(D.shape)
i, j = I.T
A[i, j] = D[i, j]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...