3 Spark机器学习 spark MLlib 矩阵向量、矩阵运算Breeze库-2

版权声明:本文为博主原创文章,转载请注明地址http://blog.csdn.net/tianyaleixiaowu。 https://blog.csdn.net/tianyaleixiaowu/article/details/83058868

上一篇是矩阵的创建、连接等相关操作。

这一篇主要是矩阵的数值计算。

1 基本运算

元素加法 a+b
元素乘法 *:*
元素除法 /:/
元素比较 <:<
元素相等 :==
元素追加 :+=
元素追乘 :*=
元素最大值 max(a)
元素最大值及位置 argmax(a)
package breeze

import breeze.linalg.{DenseMatrix, argmax, max}

object Math {
    def main(args: Array[String]): Unit = {
        val a = DenseMatrix((1, 2, 3), (4, 5, 6))
        val b = DenseMatrix((1, 1, 1), (2, 2, 2))
        println(a + b)
        println("-------------")
        //每个元素相乘
        println(a *:* b)
        println("-------------")
        //每个元素相除
        println(a /:/ b)
        println("-------------")
        //比较每个元素的大小
        println(a <:< b)
        println("-------------")
        //是否相等
        println(a :== b)
        println("-------------")
        //追加,每个元素都加1
        println(a :+= 1)
        println("-------------")
        //追乘,每个元素都乘2
        println(a :*= 2)
        println("-------------")
        val x = DenseMatrix((1, 2, 3), (4, 5, 6))
        //元素最大值
        println(max(x))
        println("-------------")
        //最大值及其位置
        println(argmax(x))
    }

}

2 求和函数

主要是对矩阵内行、列等的求和函数。

所有元素的和 sum(a)
某一列求和 sum(a(::, 1))
某一行求和 sum(a(0, ::))
对角线元素和 trace(a)
import breeze.linalg.{DenseMatrix, accumulate, sum, trace}

object Sum {
    def main(args: Array[String]): Unit = {
        val a = DenseMatrix((1, 2, 3), (4, 5, 6))
        println(sum(a))
        println("-----------")
        //对第2列求和
        println(sum(a(::, 1)))
        println("-----------")
        //对第1行求和
        println(sum(a(0, ::)))
        println("-----------")
        //对角线求和,必须是正方形矩阵
        val b = DenseMatrix((1, 2, 3), (4, 5, 6), (7, 8, 9))
        println(trace(b))
    }

}

3 其他

此外还有很多,如布尔函数、线性代数函数、取整、四舍五入等等。就不多介绍,这些不太常用的可以在需要时去查api即可。

猜你喜欢

转载自blog.csdn.net/tianyaleixiaowu/article/details/83058868