Breeze库API总结(Spark线性代数库)

导入

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

 

 

Breeze创建函数:  
操作名称Breeze函数对应Numpy函数
全0矩阵DenseMatrix.zeros[Double](2,3)zeros((2,3))
全0向量DenseVector.zeros[Double](3)zeros(3)
全1向量DenseVector.ones[Double](3)ones(3)
按数值填充向量DenseVector.fill(3){1.0}ones(3)*1.0
生成随机向量DenseVector.range(start,end,step), Vector.rangeD(start,end,step) 
线性等分向量(用于产生Start, end之间的N点行矢量)DenseVector.linspace(start,end,numvals) 
单位矩阵DenseMatr.eye[Double](3)eye(3)
对角矩阵Diag(DenseVector(1.0,2.0,3.0))diag((1.0,2.0,3.0))
按照行创建矩阵DenseMatrix((1.0,2.0),(3.0,4.0))array([[1.0,2.0],[3.0,4.0]])
按照行创建向量DenseVector(1,2,3,4)array([1,2,3,4])
向量转置DenseVector(1,2,3,4).tarray([1 2 3 4]).reshape(-1,1)
从函数创建向量DenseVector.tabulate(3){i => i*2} 
从函数创建矩阵DenseMatrix.tabulate(3,2){case(i,j) => i+j} 
从数组创建向量new DenseVector(array(1, 2, 3,4)) 
从数组创建矩阵new DenseMatrix(2,3,array(11,12,13,21.22,23)) 
0到1的随机向量DenseVector.rand(4) 
0到1的随机矩阵DenseMatrix.rand(2,3) 
   
Breeze元素访问  
操作名称Breeze函数对应Numpy函数
指定位置a(0,1)a[0,1]
向量子集a(1 to 4), a(1 until 5), a.slice(1,5)a[1:5]
按照指定步长取子集a(5 to 0 by -1)a[5:0:-1]
指定开始位置至结尾a(1 to -1)a[1:]
最后一个元素a(-1)a[-1]
矩阵指定列a(::, 2)a[:,2]
   
Breeze元素操作  
操作名称Breeze函数对应Numpy函数
调整矩阵形状a.reshape(3,2)a.reshape(3,2)
矩阵转成向量a.toDenseVector(Makes copy)a.flatten()
复制下三角lowerTriangular(a)tril(a)
复制上三角upperTriangular(a)triu(a)
矩阵复制a.copynp.copy(a)
取对角线元素diag(a)diagonal(a)
子集赋数值a(1 to 4) := 5.0a[1:4]=5.0
子集赋向量a(1 to 4) := DenseVector(1.0,2.0,3.0)a[1:4]=[1.0 2.0 3.0]
矩阵赋值a(1 to 3, 1 to 3) := 5.0a[2:4, 2:4] = 5.0
矩阵列赋值a(::, 2) := 5.0a(:,3) = 5
垂直连接矩阵DenseMatrix.vertcat(a,b)[a;b]
横向连接矩阵DenseMatrix.horzcat(a,b)[a,b]
向量连接DenseVector.vertcat(a,b)[a b]
   
Breeze数值计算函数  
操作名称Breeze函数对应Numpy函数
元素加法a + ba + b
元素乘法a :* ba * b
元素除法a :/ ba / b
元素比较a :< ba < b
元素相等a :== ba == b
元素追加a :+= 1.0a += 1
元素追乘a :*= 2.0a *= 2
向量点积a dot b, a.t * bTdot(a,b)
元素最大值max(a)a.max()
元素最大值及位置argmax(a)a.argmax()
   
Breeze求和函数  
操作名称Breeze函数对应Numpy函数
元素求和sum(a)a.sum()
每一列求和sum(a, axis._0), sum(a(::,*))sum(a,0)
每一行求和sum(a,axis._1), sum(a(*, ::))sum(a,1)
对角线元素和trace(a)a.trace()
累积和accumulate(a)a.cumsum()
   
Breeze布尔函数  
操作名称Breeze函数对应Numpy函数
元素与操作a :& ba & b
元素或操作a :| ba | b
元素非操作!a~a
任意元素非零any(a)any(a)
所有元素非零all(a)all(a)
   
Breeze线性代数函数  
操作名称Breeze函数对应Numpy函数
线性求解a \ blinalg.solve(a,b)
转置a.ta.conj.transpose()
求行列式det(a)linalg.det(a)
求逆inv(a)linalg.inv(a)
求伪逆pinv(a)linalg.pinv(a)
求范数norm(a)norm(a)
特征值和特征向量eigSym(a)linalg.eig(a)[0]
特征值val(er,ei,_) = eig(a)(实部与虚部分开)lialg.eig(a)[0]
特征向量eig(a)._3 
奇异值分解val svd.SVD(u,s,v) = svd(a)linalg.svd(a)
求矩阵的秩rank(a)rank(a)
矩阵长度a.lengtha.size
矩阵行数a.rowsa.shape[0]
矩阵列数a.colsa.shape[1]
   
Breeze取整函数  
操作名称Breeze函数对应Numpy函数
四舍五入round(a)around(a)
最小整数ceil(a)ceil(a)
最大整数floor(a)floor(a)
符号函数signum(a)sign(a)
取正数abs(a)abs(a)

 

 

 

BLAS向量-向量运算 
SROTGGivens旋转设置
SROTMG改进Givens旋转设置
SROTGivens旋转
SROTM改进Givens旋转
SSWAP交换x和y
SSCAL常数a乘以向量x()
SCOPY把x复制到y
SAXPY向量y+常数a乘以向量x(y = a*x + y)
SDOT点积
SDSDOT扩展精度累积的点积
SNRM2欧氏范数
SCNRM2欧氏范数
SASUM绝对值之和
ISAMAX最大值位置
  
BLAS矩阵-向量运算 
SGEMV矩阵向量乘法
SGBMV带状矩阵向量乘法
SSYMV对称矩阵向量乘法
SSBMV对称带状矩阵向量乘法
SSPMV对称填充矩阵向量乘法
STRMV三角矩阵向量乘法
STBMV三角带状矩阵向量乘法
STPMV三角填充矩阵向量乘法
STRSV求解三角矩阵
STBSV求解三角带状矩阵
STPSV求解三角填充矩阵
SGERA := alpha*x*y’ + A
SSYRA := alpha*x*x’ + A
SSPRA := alpha*x*x’ + A
SSYR2A := alpha*x*y’ + alpha*y*x’ + A
SSPR2A := alpha*x*y’ + alpha*y*x’ + A
  
BLAS矩阵-矩阵运算 
SGEMM矩阵乘法
SSYMM对称矩阵乘法
SSYPK对称矩阵的秩-k修正
SSYR2K对称矩阵的秩-2k修正
STRMM三角矩阵乘法
STRSM多重右端的三角线性方程组求解

 

 

向量与向量

  • 加:+    减:-   点乘:  :*   点除::/    向量乘法: *  向量除法: /

矩阵与矩阵

  • 加:+    减:-   点乘:  :*   点除::/        矩阵乘法: *  矩阵除法: /

矩阵或向量与数值

  • 加:  减:-    乘:*    除:/  

矩阵和向量

  • 加:+    减:-   点乘:  :*   点除::/        矩阵乘法: *  矩阵除法: /
  • Matrix(*, ::)+Vector 逐行

  • Matrix(::, *)+Vector 逐列

 

 

参考文档:

1. https://github.com/scalanlp/breeze/wiki/Quickstart

2.https://github.com/scalanlp/breeze/wiki/Linear-Algebra-Cheat-Sheet

3.http://blog.csdn.net/hoikinyiu/article/details/52662268

4.http://blog.csdn.net/wo334499/article/details/51728628

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值