Индексирование элементов матрицы, когда входные массивы равны - PullRequest
0 голосов
/ 29 января 2019

У меня есть матрица, и я хочу иметь возможность изменять значение определенных элементов при индексации их с двумя массивами без использования циклов

Например,

import numpy as np

A = np.array([[0, 0, 0, 0],
              [0, 0, 0, 0],
              [0, 0, 0, 0]])
b = np.array([0, 1, 2])
c = np.array([2, 3, 1, 1])

Если индекс iв b равен индексу j в c, то доступ к A [i, j]

я пробовал

A[b, c] = 1

и

A[b == c] = 1

но яЯ не получаю правильный результат Я считаю, что результат должен быть

A = array([[0, 0, 0, 0],
           [0, 0, 1, 1],
           [1, 0, 0, 0]])

1 Ответ

0 голосов
/ 29 января 2019

Вы можете использовать numpy.meshgrid, чтобы расширить свои одномерные массивы индексации до двумерных массивов индексации:

import numpy as np

A = np.array([[0, 0, 0, 0],
              [0, 0, 0, 0],
              [0, 0, 0, 0]])
b = np.array([0, 1, 2])
c = np.array([2, 3, 1, 1])

C,B = np.meshgrid(c,b)
A[B==C] = 1

print(A)

дает

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