2016-12-10 3 views
3

Я вектор и матрица:Как вставить вектор из них в матрицу?

1 
1 

0 0 
0 0 

Я хочу предварять вектор матрицу для получения:

1 0 0 
1 0 0 

У меня до сих пор:

val dv = DenseVector(1.0,1.0); 
val dm = DenseMatrix.zeros[Double](2,2) 

Чтение API: http://www.scalanlp.org/api/breeze/#breeze.linalg.DenseMatrix и оба этих документа: https://github.com/scalanlp/breeze/wiki/Quickstarthttps://github.com/scalanlp/breeze/wiki/Linear-Algebra-Cheat-Sheet

Но эта операция не представляется доступной?

Есть ли способ/функция для добавления вектора единиц в матрицу?

ответ

3

Другим вариантом здесь. Во-первых, преобразовать DenseVector в матрицу 2X1, а затем использовать метод DenseMatrix.horzcat():

val newMat = DenseMatrix.horzcat(new DenseMatrix(2,1,dv.toArray), dm) 

# breeze.linalg.DenseMatrix[Double] = 1.0 0.0 0.0 
#          1.0 0.0 0.0 

newMat.rows 
# 2 
newMat.cols 
# 3 
1

Вы можете сделать функцию, чтобы создать плотную матрицу с колонкой единиц предварённой:

def prependOnesColumn[V](original: DenseMatrix[V]): DenseMatrix[V] = { 
    val ones = DenseMatrix.ones(original.rows, 1) 
    val dataWithOnes = ones.data ++ original.data 
    DenseMatrix.create(original.rows, original.cols + 1, dataWithOnes) 
} 
+1

ответ Psidom выглядит как идиоматических способ конкатенации любого числа матриц с библиотекой Бриз. – Atreys

Смежные вопросы