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).t array([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.copy np.copy(a)
取对角线元素 diag(a) diagonal(a)
子集赋数值 a(1 to 4) := 5.0 a[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.0 a[2:4, 2:4] = 5.0
矩阵列赋值 a(::, 2) := 5.0 a(:,3) = 5
垂直连接矩阵 DenseMatrix.vertcat(a,b) [a;b]
横向连接矩阵 DenseMatrix.horzcat(a,b) [a,b]
向量连接 DenseVector.vertcat(a,b) [a b]
     
Breeze数值计算函数    
操作名称 Breeze函数 对应Numpy函数
元素加法 a + b a + b
元素乘法 a :* b a * b
元素除法 a :/ b a / b
元素比较 a :< b a < b
元素相等 a :== b a == b
元素追加 a :+= 1.0 a += 1
元素追乘 a :*= 2.0 a *= 2
向量点积 a dot b, a.t * bT dot(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 :& b a & b
元素或操作 a :| b a | b
元素非操作 !a ~a
任意元素非零 any(a) any(a)
所有元素非零 all(a) all(a)
     
Breeze线性代数函数    
操作名称 Breeze函数 对应Numpy函数
线性求解 a \ b linalg.solve(a,b)
转置 a.t a.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.length a.size
矩阵行数 a.rows a.shape[0]
矩阵列数 a.cols a.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向量-向量运算  
SROTG Givens旋转设置
SROTMG 改进Givens旋转设置
SROT Givens旋转
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 求解三角填充矩阵
SGER A := alpha*x*y’ + A
SSYR A := alpha*x*x’ + A
SSPR A := alpha*x*x’ + A
SSYR2 A := alpha*x*y’ + alpha*y*x’ + A
SSPR2 A := 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

猜你喜欢

转载自blog.csdn.net/lirika_777/article/details/90106169