Как вставить вектор единиц в матрицу?

У меня есть вектор и матрица:

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/Quickstart https://github.com/scalanlp/breeze/wiki/Linear-Algebra-Cheat-Sheet

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

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


person blue-sky    schedule 10.12.2016    source источник


Ответы (2)


Другой вариант здесь. Сначала преобразуйте 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
person Psidom    schedule 10.12.2016

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

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)
}
person Atreys    schedule 10.12.2016
comment
Ответ Psidom выглядит как идиоматический способ объединения любого количества матриц с библиотекой бриза. - person Atreys; 12.12.2016