Я пытаюсь решить проблему «очень простая». Не так просто в Python. Учитывая большую матрицу А и еще меньшую матрицу BI нужно заменить некоторые элементы А с В. В Matlab это будет выглядеть следующим образом:Заменить элементы матрицы с определенными координатами в python
Given A, row_coord = [1,5,6] col_coord = [2,4], and a matrix B of size(3X2), A[row_coord, col_coord] = B
В Python Я пытался использовать product(row_coord, col_coord)
из itertools
для формирования набора всех индексов, которые должны быть доступны в A, но это не работает. Все примеры подменю подматрицы относятся к блочным примерам row_coord = col_coord. Ничего конкретного, кроме http://comments.gmane.org/gmane.comp.python.numeric.general/11912, похоже, связано с проблемой, с которой я столкнулся, и код в ссылке не работает.
Примечание: Я знаю, что я могу реализовать то, что мне нужно, через double for-loop, но по моим данным такой цикл добавляет 9 секунд к запуску одной итерации, и я ищу более быстрый способ реализовать это.
Любая помощь будет принята с благодарностью.
Можете ли вы предоставить некоторые примеры матриц и векторов? Они не должны быть безумно большими, достаточно для проверки. – Ffisegydd
Да, конечно: A = np.zeros ([20,20]) col_coord = [0,1,3] row_coord = [1,2] B = 1 (положим B постоянным). Тривиальный способ решить эту проблему: by a in row_coord: для b в col_coord: A [row_coord [a], col_coord [b]] = 1, но я хотел бы сделать это быстрее, используя как-то утилиту intertools .. Спасибо за это :-( – user3861925