【发布时间】:2021-08-10 03:29:27
【问题描述】:
我正在尝试以更高效(矢量化)的方式而不是循环来进行以下计算。
for i in range(N):
y[:,idx[i]] -= X[i]
在哪里:
-
X是 N 乘 D 矩阵, -
y是k乘D矩阵 -
idx是一个长度为 N 的向量,其值介于 0 和 k-1 之间
例子:
x = array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]])
y = array([[100, 101, 102, 103],
[104, 105, 106, 107],
[108, 109, 110, 111]])
idx = array([2, 1, 1, 1, 2])
所以输出应该是:
y = array([[100, 101, 102, 103],
[ 80, 78, 76, 74],
[ 92, 91, 90, 89]])
这相当于:
>>> for i in range(5):
... y[idx[i],:] -= x[i]
【问题讨论】:
-
你能举个简单的例子吗
-
y[:,idx[i]]或y[idx[i],:]? -
我的意思是给出矩阵分量,例如 if a = [[1,2,3], [4,5,6]] 和 b = [7,8,9] 和 ind = [0 , 1,2] 你想计算或得到什么?
标签: python numpy matrix vectorization