1
在Parallel Colt中,如何向矩陣的每一行添加一個向量,最好是在原地?特別是,我有一個DoubleMatrix1D,我想添加到DoubleMatrix2D的每一行。看起來這應該是直截了當的,但從Javadoc中並不清楚。 (我當然可以用手工完成,但似乎很奇怪,沒有這種能力可以建成)。在Parallel Colt中添加矩陣和向量
在Parallel Colt中,如何向矩陣的每一行添加一個向量,最好是在原地?特別是,我有一個DoubleMatrix1D,我想添加到DoubleMatrix2D的每一行。看起來這應該是直截了當的,但從Javadoc中並不清楚。 (我當然可以用手工完成,但似乎很奇怪,沒有這種能力可以建成)。在Parallel Colt中添加矩陣和向量
所以,一個m維向量(比如,aVector
)添加到n×m的矩陣(比如,aMatrix
)的第i行,你需要做到以下幾點:
// 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
中的行中,然後在使用assign()
步驟之前使用DoubleAlgebra#transpose()
獲取轉置。
編輯
有你想改變只有一個特定的(比如,第i)行加入就地一排,在案件的一個更簡單的方法:
aMatrix.viewRow(i).assign(aVector);
我認爲你應該多指定一點:例如你正在使用什麼樣的對象。 – fpe
@fpe:更新了我正在使用的特定類型。 –