我有一个矩阵,是的,A
. 在她的行上进行操作时,我经常需要创建“敲除”向量。基本上
var v = [5, 4, 3, 2, 1];
v_{-2} = [5, 3, 2, 1]; // e.g. v[2] is removed
我不想永久删除它,只是为了这个计算,我想沿着A
.
var knockouts: [A.dim(1)] int; // list of knockout dims, as tall as A
for i in A.dim(1) {
var w = ||v_{-knockouts[i]}|| / ||v||
}
== 更新 ==
更多关于A
保持它的一般性。它非常大而且(我不会)稀疏。剔除的元素应该在填充的子域内,但在某些情况下可能不在。条目通常是概率,就像在随机矩阵中一样,所以一些常见的行操作是
r = A[i,..]
s = r[3] / sum(r_{-3})
s = sum(r[3] log(r_{-3}))
s = sum(log (r_{-3})) / sum (log (r_{-5}))
随着所有日志记录的进行,设置r[3] = 0
. 但是,如果这是解决方案,那么在幕后有一个方便的功能仍然会很好。我不记得看到过一个但是,也许是sum(r.except(3))
另一种语法。