У меня есть пустая матрица 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]
Настоящей векторизации я не вижу, но явные циклы for не выполнимы:
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.
Я не могу думать ни об одном, нет.