Breeze库API总结(Spark线性代数库)(转载)
导入
import breeze.linalg._  
import breeze.numerics._  
Spark Mllib底层的向量、矩阵运算使用了Breeze库,Breeze库提供了Vector/Matrix的实现以及相应计算的接口(Linalg)。但是在MLlib里面同时也提供了Vector和Linalg等的实现。在使用Breeze库时,需要导入相关包:
Import breeze.linalg._
Import breeze.numeric._
Breeze创建函数:
| 操作名称 | Breeze函数 | 输出结果 | 对应Numpy函数 | 
| 全0矩阵 | DenseMatrix.zeros[Double](2,3) | 0.0 0.0 0.0 0.0 0.0 0.0 | zeros((2,3)) | 
| 全0向量 | DenseVector.zeros[Double](3) | DenseVector(0.0,0.0,0.0) | zeros(3) | 
| 全1向量 | DenseVector.ones[Double](3) | DenseVector(1.0,1.0,1.0) | ones(3) | 
| 按数值填充向量 | DenseVector.fill(3){1.0} | DenseVector(1.0,1.0,1.0) | ones(3)*1.0 | 
| 生成随机向量 | DenseVector.range(start,end,step), Vector.rangeD(start,end,step) | DenseVector(1,3,5,7,9) | 
 | 
| 线性等分向量(用于产生Start, end之间的N点行矢量) | DenseVector.linspace(start,end,numvals) | 
 | 
 | 
| 单位矩阵 | DenseMatr.eye[Double](3) | 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 | eye(3) | 
| 对角矩阵 | Diag(DenseVector(1.0,2.0,3.0)) | 1.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 3.0 | diag((1.0,2.0,3.0)) | 
| 按照行创建矩阵 | DenseMatrix((1.0,2.0),(3.0,4.0)) | 1.0 2.0 3.0 4.0 | array([[1.0,2.0],[3.0,4.0]]) | 
| 按照行创建向量 | DenseVector(1,2,3,4) | [1 2 3 4] | array([1,2,3,4]) | 
| 向量转置 | DenseVector(1,2,3,4).t | [1 2 3 4]T | array([1 2 3 4]).reshape(-1,1) | 
| 从函数创建向量 | DenseVector.tabulate(3){i => i*2} | [0 1 4] | 
 | 
| 从函数创建矩阵 | DenseMatrix.tabulate(3,2){case(i,j) => i+j} | 0 1 1 2 2 3 | 
 | 
| 从数组创建向量 | new DenseVector(array(1, 2, 3,4)) | [1 2 3 4] | 
 | 
| 从数组创建矩阵 | new DenseMatrix(2,3,array(11,12,13,21.22,23)) | 11 12 13 21 22 23 | 
 | 
| 0到1的随机向量 | DenseVector.rand(4) | [0.0222 0.2231 0.5356 0.6902] | 
 | 
| 0到1的随机矩阵 | DenseMatrix.rand(2,3) | 0.2122 0.3033 0.8675 0.6628 0.0023 0.9987 | 
 | 
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 | 多重右端的三角线性方程组求解 | 
| 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 | 多重右端的三角线性方程组求解 | 
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号