Spark MLlib之使用Breeze操作矩阵向量

本文介绍了如何在Spark MLlib中利用Breeze库进行矩阵和向量的操作,包括创建函数、元素访问、数值计算、求和、布尔运算以及线性代数和取整函数的使用,详细探讨了每个功能的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用Breeze 库时,需要导入相关包:

import breeze.linalg._
import breeze.numerics._

Breeze创建函数

//全0矩阵
DenseMatrix.zeros[Double](3,2)

res0: breeze.linalg.DenseMatrix[Double] =
0.0  0.0  
0.0  0.0  
0.0  0.0  

//全0向量
DenseVector.zeros[Double](2)

res1: breeze.linalg.DenseVector[Double] = DenseVector(0.0, 0.0)

//全1向量
DenseVector.ones[Double](2)

res2: breeze.linalg.DenseVector[Double] = DenseVector(1.0, 1.0)

//按数值填充向量
DenseVector.fill[Double](3, 2)

res3: breeze.linalg.DenseVector[Double] = DenseVector(2.0, 2.0, 2.0)

//生成随机向量
DenseVector.range(1, 9, 2)
DenseVector.rangeD(1, 9, 2)
DenseVector.rangeF(1, 9, 2)

res4: breeze.linalg.DenseVector[Int] = DenseVector(1, 3, 5, 7)
res5: breeze.linalg.DenseVector[Double] = DenseVector(1.0, 3.0, 5.0, 7.0)
res6: breeze.linalg.DenseVector[Float] = DenseVector(1.0, 3.0, 5.0, 7.0)

//单位矩阵
DenseMatrix.eye[Double](4)

res7: breeze.linalg.DenseMatrix[Double] = 
1.0  0.0  0.0  0.0  
0.0  1.0  0.0  0.0  
0.0  0.0  1.0  0.0  
0.0  0.0  0.0  1.0  

//对角矩阵
diag(DenseVector(3.0, 4.0, 5.0))

res8: breeze.linalg.DenseMatrix[Double] = 
3.0  0.0  0.0  
0.0  4.0  0.0  
0.0  0.0  5.0 

//按照行创建矩阵
DenseMatrix((4.0, 5.0, 6.0), (7.0, 8.0, 9.0))

res9: breeze.linalg.DenseMatrix[Double] = 
4.0  5.0  6.0  
7.0  8.0  9.0  

//按照行创建向量
DenseVector((4.0, 5.0, 6.0, 7.0, 8.0, 9.0))

res10: breeze.linalg.DenseVector[(Double, Double, Double, Double, Double, Double)] = DenseVector((4.0,5.0,6.0,7.0,8.0,9.0))

//向量转置
DenseVector((4.0, 5.0, 6.0, 7.0, 8.0, 9.0)).t

res11: breeze.linalg.Transpose[breeze.linalg.DenseVector[(Double, Double, Double, Double, Double, Double)]] = Transpose(DenseVector((4.0,5.0,6.0,7.0,8.0,9.0)))

//从函数创建向量
DenseVector.tabulate(5)(i => i*i)
DenseVector.tabulate(0 to 5)(i => i*i)

res12: breeze.linalg.DenseVector[Int] = DenseVector(0, 1, 4, 9, 16)
res13: breeze.linalg.DenseVector[Int] = DenseVector(0, 1, 4, 9, 16, 25)

//从函数创建矩阵
DenseMatrix.tabulate(3, 4){ case (i, j) => i*i+j*j }

res14: breeze.linalg.DenseMatrix[Int] = 
0  1  4  9   
1  2  5  10  
4  5  8  13  

//从数组创建向量
new DenseVector[Double](Array(2.0, 5.0, 8.0))

res15: breeze.linalg.DenseVector[Double] = DenseVector(2.0, 5.0, 8.0)

//从数组创建矩阵
new DenseMatrix[Double](3, 2, Array(1.0, 4.0, 7.0, 3.0, 6.0, 9.0))

res16: breeze.linalg.DenseMatrix[Double] = 
1.0  3.0  
4.0  6.0  
7.0  9.0  

//0 到 1的随机向量
DenseVector.rand(9, Rand.uniform)
DenseVector.rand(9, Rand.gaussian)

res17: breeze.linalg.DenseVector[Double] = DenseVector(0.30960687979350654, 0.577998
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值