scala – 如何用微风来缩放矩阵
发布时间:2020-12-16 08:47:18 所属栏目:安全 来源:网络整理
导读:我正在使用 Breeze库的数学部分并具有以下矩阵: val matrix = breeze.linalg.DenseMatrix((1.0,2.0),(3.0,4.0)) 我想用一个标量Double(并将结果添加到另一个Matrix)来缩放它 * =和:* =运算符: val scale = 2.0val scaled = matrix * scale 这很好用(我在
我正在使用
Breeze库的数学部分并具有以下矩阵:
val matrix = breeze.linalg.DenseMatrix((1.0,2.0),(3.0,4.0)) 我想用一个标量Double(并将结果添加到另一个Matrix)来缩放它 val scale = 2.0 val scaled = matrix * scale 这很好用(我在下面的回答中有更多细节). 更新此代码确实可以独立运行.我好像在其他地方有问题.抱歉浪费你的带宽…… 更新2但是,如果我特意将类型Matrix分配给变量矩阵,则代码无法编译: val matrix: Matrix[Double] = breeze.linalg.DenseMatrix((1.0,4.0)) val scaled = matrix * scale // does not compile 编译器一直在抱怨它“找不到参数op的隐含值”. 有人能解释一下吗?这是Breeze或故意的错误吗? TIA. 解决方法
对于那些与Scala和Breeze库斗争的人,我想详细介绍一下Matrix实例可用的一些函数/运算符.
我们的出发点是一个简单的Double矩阵(Matrix和相关操作也支持Float和Int): scala> val matrix = breeze.linalg.DenseMatrix((1.0,4.0)) 你可以轻松地使用它来打印它 scala> println(matrix) 1.0 2.0 3.0 4.0 Breeze支持保持左操作数完整的操作符和修改左操作数的操作符 – 例如*和* =: scala> val scaled1 = matrix * 2.0 // returns new matrix! scala> println(matrix) 1.0 2.0 3.0 4.0 scala> println(scaled1) 2.0 4.0 6.0 8.0 scala> println(matrix == scaled1) false scala> val scaled2 = matrix *= 2.0 // modifies and returns matrix! scala> println(matrix) 2.0 4.0 6.0 8.0 scala> println(scaled2) 2.0 4.0 6.0 8.0 scala> println(matrix == scaled2) // rough equivalent of calling Java's equals() true 两个变量的哈希码表明它们实际上指向同一个对象(根据javadoc为真,可以通过查看源来验证): scala> println(matrix.##) 12345678 scala> println(scaled2.##) 12345678 这进一步说明如下: scala> val matrix2 = breeze.linalg.DenseMatrix((2.0,4.0),(6.0,8.0)) scala> println(matrix == matrix2) true scala> println(matrix2.##) 34567890 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |