Присвоить значения нескольким столбцам матрицы с пустым циклом - PullRequest
1 голос
/ 10 апреля 2019

У меня есть пустая матрица X с n столбцами, и у меня есть список I из n списков индексов i и соответствующий список V из n списков значений v. Для каждого столбца c в X я хочу назначитьиндексы I [c] до значений V [c].Есть ли способ сделать это без цикла for, то есть:

n = 3
X = np.zeros((4,n))
I = [[0,1],[1,2,3],[0]]
V = [[1,1],[2,2,2],[3]]

for c in range(n):
    X[I[c],c] = V[c]

1 Ответ

1 голос
/ 10 апреля 2019

Истинная векторизация, которую я не вижу, но никакое явное для циклов не выполнимо:

X[np.concatenate(I), np.arange(len(I)).repeat(np.vectorize(len)(I))] = np.concatenate(V)
X
# array([[1., 0., 3.],
#        [1., 2., 0.],
#        [0., 2., 0.],
#        [0., 2., 0.]])

Но я не уверен, что это будет быстрее, чем цикл for.

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