У меня есть массив indexes
, который для каждой строки содержит столбцы, которые должны быть заполнены. Например:
[array([[ 2, 14098, 6824, 24207, 1215],
[ 51, 1277, 3197, 1052, 4076],......
И у меня есть еще один массив values
, содержащий значения, которые должны быть заполнены в этих позициях. Например:
array([[1, 7, 75, 82, 11],
[11, 5, 8, 82, 811],...
Это означает, что для строки 0 столбец 2 должен быть заполнен значением '1', столбец 14098 должен быть заполнен значением '7' ... для строки 1, столбец 51 должен должно быть заполнено значением '11', столбец 1277 должен быть заполнен значением '5' ...
И третьим массивом a = np.zeros((100000, 100000))
, который является массивом, который должен быть заполнен с учетом двух предыдущих массивов.
Я сейчас использую вложенный l oop, чтобы сделать это, но я почти уверен, что есть лучший способ сделать это:
for row_idx in range(indexes.shape[0]):
for col_idx in range(indexes.shape[1]):
column = indexes[row_idx][col_idx]
a[row_idx][indexes[row_idx][col_idx]] = values[row_idx][col_idx]
Как я могу заполнить массив, используя стиль python / numpy (необычное индексирование, трансляция ...)? Какой самый эффективный способ памяти это сделать, поскольку у меня ограничен оперативной памяти?
Спасибо за вашу помощь заранее!