Создайте новую DenseMatrix из подматрицы в Breeze, используя Scala
У меня есть DenseMatrix (original)
, Я нарезаю его, чтобы удалить последний столбец (subset
). После этого я хочу получить доступ к данным в подмножестве. Тем не мение, subset.data
по-прежнему указывает на данные в старом DenseMatrix
(original
). Есть идеи, что мне здесь не хватает и как это исправить?
original: breeze.linalg.DenseMatrix[Int] =
1 200 3 0
10 201 4 0
111 200 0 100
150 195 0 160
200 190 0 150
scala> val numcols = original.cols
numcols: Int = 4
scala> val subset = original(::, 0 to numcols - 2)
subset: breeze.linalg.DenseMatrix[Int] =
1 200 3
10 201 4
111 200 0
150 195 0
200 190 0
scala> subset.data
res0: Array[Int] = Array(1, 10, 111, 150, 200, 200, 201, 200, 195, 190, 3, 4, 0, 0, 0, 0, 0, 100, 160, 150)
scala> subset.data.size
res1: Int = 20
1 ответ
Решение
Не берите в голову, я нашел один способ сделать это.
используя следующее
scala> subset.toDenseMatrix.data
res10: Array[Int] = Array(1, 10, 111, 150, 200, 200, 201, 200, 195, 190, 3, 4, 0, 0, 0)
scala> subset.toDenseMatrix.data.size
res11: Int = 15