基底列と非基底列を持つ行列があるとします。また、行列の基底部分または非基底部分を取得する機能が必要です。次のように宣言された配列で指定されたベースはどの列ですかvar base: Array[Boolean]
現在、私は次のようにしています:
def getMatrix(matrix: DenseMatrix[Double], pred: Boolean, m: Int, n: Int): DenseMatrix[Double] = {
var a = DenseMatrix.zeros[Double](m, n)
var scanPos: Int = 0
var insertPos: Int = 0
for (el <- base) {
if (el == pred) {
a(::, insertPos) := matrix(::, scanPos)
insertPos += 1
}
scanPos += 1
}
return a
}
しかし、このコードは醜く、私は本当に嫌いです。もっと洗練された解決策が必要であり、私はそれを求めています
PS: Breeze ライブラリの DenseMatrix クラスであり、2 次元配列と見なすことができます。