1

在 Parallel Colt 中,如何将向量添加到矩阵的每一行,最好是就地?特别是,我有一个 DoubleMatrix1D,我想将它添加到 DoubleMatrix2D 的每一行。看起来这应该很简单,但从 Javadoc 中并不清楚。(我当然可以手动完成,但没有内置这样的功能似乎很奇怪)。

4

1 回答 1

2

因此,要将 m 维向量(例如aVector)添加到 nxm 矩阵的第 i 行(例如aMatrix),您需要执行以下操作:

// new matrix where each row is the vector you want to add, i.e., aVector
DoubleMatrix2D otherMatrix = DoubleFactory2D.sparse.make(aVector.toArray(), n);
DoubleDoubleFunction plus = new DoubleDoubleFunction() {
    public double apply(double a, double b) { return a+b; }
};
aMatrix.assign(otherMatrix, plus);    

API 说明了该assign方法:

assign(DoubleMatrix2D y, DoubleDoubleFunction function) 
    Assigns the result of a function to each cell; x[row,col] = function(x[row,col],y[row,col]).

我自己没有测试过这个DoubleFactory2D#make()方法。如果它创建了一个矩阵,其中您aVector作为列而不是行合并otherMatrix,则在使用该步骤DoubleAlgebra#transpose()之前用于获取转置。assign()

编辑

如果您只想更改特定(例如,第 i 个)行,则有一种更简单的方法可以就地添加行:

aMatrix.viewRow(i).assign(aVector); 
于 2014-01-22T11:38:27.970 回答