Как заполнить элементы матрицы индексами, взятыми из другой матрицы в python - PullRequest
0 голосов
/ 02 января 2019

У меня есть следующий код, который строит две матрицы a (3 * 2 матрицы нулей) и b.Я хочу заменить 0 s в матрице a на 1 s в зависимости от местоположения индекса, хранящегося в индексе b.Я хочу сделать это без for петли.

import numpy as np

a = np.zeros((3, 2))
b = np.array([0, 1, 0])

Вывод должен быть

c = [[1, 0],
     [0, 1],
     [1, 0]]

1 Ответ

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

Numpy Fancy Indexing ваш друг здесь.Чтобы b работал как индекс столбца, вам нужен массив равного размера b, который сообщит вам строку, к которой относится каждый индекс:

a[np.arange(b.size), b] = 1

Это изменяет a вместо.Если это не то, что вы хотите, сначала сделайте копию:

c = a.copy()
c[np.arange(b.size), b] = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...