Я хочу вычесть вектор столбца из простой матрицы, используя другой вектор, который является индексом столбцов, где первый вектор столбца необходимо вычесть из основной матрицы.Например,
M = array([[ 1, 2, 1, 1],
[ 2, 1, 1, 1],
[ 1, 1, 2, 1],
[ 2, 1, 1, 1],
[ 1, 1, 1, 2]]) # An example matrix
V = array([1, 1, 1, 1, 1]) # An example column vector
I = array([0, 3, 2, 3, 1, 3, 3]) # The index maxtrix
Теперь я хочу вычесть V из M в числах столбцов, указанных в I. Например.I [0] равно 0, поэтому вычтите V из первого столбца (нулевой индекс) матрицы M.
Аналогично I [1] = 3 вычтите V из четвертого столбца (три индекса) матрицы M.
В конце операции, так как 3 встречается 4 раза в I, поэтому V будет вычтено из третьего столбца, т. Е. Последнего столбца M-4 раза.
Мне нужносделать это, используя только широковещание, без петель.
Я пробовал следующее:
M[:, I] - V[np.newaxis, :].T
, но в результате получается широковещательная результирующая матрица, имеющая больше столбцов, чем в M.