我是 Scala 的新手,我在一个看似简单的问题上遇到了障碍。我正在使用 Scala 库breeze
,需要采用array buffer
(可变)并将结果放入矩阵中。这……应该很简单但是?Scala 如此疯狂的类型转换breeze
似乎对制作 DenseVector 时将采用的数据类型非常挑剔。这只是一些原型代码,但任何人都可以帮我想出一个解决方案吗?现在我有类似的东西......
//9 elements that need to go into a 3x3 matrix, 1-3 as top row, 4-6 as middle row, etc)
val numbersForMatrix: ArrayBuffer[Double] = (1, 2, 3, 4, 5, 6, 7, 8, 9)
//the empty 3x3 matrix
var M: breeze.linalg.DenseMatrix[Double] = DenseMatrix.zeros(3,3)
在微风中,您可以执行类似
的操作M(0,0) = 100
并将第一个值设置为 100,您也可以执行以下操作:
M(0, 0 to 2) := DenseVector(1, 2, 3)
将第一行设置为 1、2、3 但我无法让它执行类似...
var dummyList: List[Double] = List(1, 2, 3) //this works
var dummyVec = DenseVector[Double](dummyList) //this works
M(0, 0 to 2) := dummyVec //this does not work
并成功将第一行更改为 1、2、3。那是一个列表,甚至不是一个 ArrayBuffer。
我愿意从 ArrayBuffer 更改数据类型,但根本不知道如何处理...
注意:我是一个 Python 程序员,他习惯于使用numpy
并且只是给它数组。该breeze
文档没有提供足够的其他数据类型示例,我无法弄清楚这一点。谢谢!