• 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 交换xy
    SSCAL 常数a乘以向量x()
    SCOPY x复制到y
    SAXPY 向量y+常数a乘以向量xy = 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 逐列
  • 相关阅读:
    cocos2dx 3.x(获取当前系统时间)
    cocos2dx 3.x(加载cocostudio进度条)
    cocos2dx 3.x(Button传统按钮)
    cocos2dx 3.x以上(Sprite精灵类的相关属性与创建)
    cocos2dx 3.x版本搭建Mac环境工程(创建一个新的C++工程)百分百可行
    iOS
    iOS -Swift 3.0 -Array(数组与可变数组相关属性及用法)
    iOS -Swift 3.0 -String(字符串常规用法)
    iOS -Swift 3.0 -UIButton属性大全
    iOS -Swift 3.0 -UILabel属性大全
  • 原文地址:https://www.cnblogs.com/LT-blogs/p/6233047.html
Copyright © 2020-2023  润新知