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