【发布时间】:2019-04-17 02:32:22
【问题描述】:
我想使用另一个向量从 numpy 矩阵中减去列向量,该向量是需要从主矩阵中减去第一个列向量的列的索引。例如。
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
现在我想在 I 中给出的列号处从 M 中减去 V。 例如。 I[0] 为 0,因此从矩阵 M 的第一列(零索引)中减去 V。
同理 I[1] = 3,从矩阵 M 的第四列(三个索引)中减去 V。
在运算结束时,由于3在I中出现了4次,所以从第三列即M-4次的最后一列中减去V。
我只需要使用广播来做到这一点,没有循环。
我尝试了以下方法:
M[:, I] - V[np.newaxis, :].T
但它最终会广播结果矩阵,使其具有比 M 中更多的列。
【问题讨论】:
标签: python numpy matrix array-broadcasting