导入

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 多重右端的三角线性方程组求解

向量与向量

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

矩阵与矩阵

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

矩阵或向量与数值

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

矩阵和向量

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

Breeze库API总结(Spark线性代数库)(转载)的更多相关文章

  1. Chai.js断言库API中文文档【转载】

    基于chai.js官方API文档翻译.仅列出BDD风格的expect/should API.TDD风格的Assert API由于不打算使用,暂时不放,后续可能会更新. BDD expect和shoul ...

  2. Raphael Js矢量库API简介:

    Raphael Js矢量库API简介:Raphael Javascript 是一个 Javascript的矢量库. 2010年6月15日,著名的JavaScript库ExtJS与触摸屏代码库项目jQT ...

  3. 第三方库API接口

    第三方库API接口 InfluxDB提供了各种语言的Http API接口的封装.具体可以看这里: https://docs.influxdata.com/influxdb/v0.10/clients/ ...

  4. Robot Framework - 3 - 测试库API

    08- 创建测试库--发布测试库 ***** 测试库文档 为了便于维护,测试库文档应该从源代码中生成. Robot  Framework 有自己的文档工具 libdoc.py生成 API 文档. 一个 ...

  5. 各大巨头电商提供的IP库API接口-新浪、搜狐、阿里

    新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js     (不可用)新浪多地域测试方法:http://i ...

  6. 【Mac + Python3.6 + ATX基于facebook-wda】之IOS自动化(三):facebook-wda库--API学习以及附录:Github上对WDA的问题解答

    下面简单介绍facebook-wda库--API的学习 import wda # debug模式,会在run运行时控制台生成消息 wda.DEBUG = False # False 关闭,True开启 ...

  7. 掌握Spark机器学习库(课程目录)

    第1章 初识机器学习 在本章中将带领大家概要了解什么是机器学习.机器学习在当前有哪些典型应用.机器学习的核心思想.常用的框架有哪些,该如何进行选型等相关问题. 1-1 导学 1-2 机器学习概述 1- ...

  8. 【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第32章       STM32H7的TIM定时器基础知识和H ...

  9. 【STM32H7教程】第29章 STM32H7的USART串口基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第29章       STM32H7的USART串口基础知识和 ...

随机推荐

  1. sql表别名

    表名.列明后面接as xx,xx就是表/列的别名,as可省略 别名通常有两个作用 as可省略,as可省略

  2. JMeter 将上一个请求的结果作为下一个请求的参数——使用正则提取器(转载)

    在接口测试和压力测试过程中,经常会将几个流程串联起来才能测试.如:我要进行获取用户信息接口测试,我就要先登录成功后,才能获取用户信息.所以,我就要首先要登录,获得我的登录凭证(tokenId或tick ...

  3. Sony Z1 flashtool 刷机笔记

    第一次硬刷,(相较于recovery的卡刷)差点变成无限重启..记录一些关键步骤: 1 unlock bootloader http://developer.sonymobile.com/unlock ...

  4. How to use aws CloudFront for CDN

    How to use aws CloudFront for CDN 1. create a new distribution in AWS cloudfront service, select alt ...

  5. C#面试(2016年4月)

    1.WebForm和MVC的区别 MVC: 1)通过model.view.controller将处理后台逻辑代码与前台展示逻辑代码进行了很好的分离: 2)通过修改路由规则,可以控制生成自定义的url, ...

  6. div垂直居中

    width:265px; height:130px; display:table-cell; vertical-align:middle; text-align:center;

  7. java new Date()得到的时间和系统时间不一样

    造成这种问题的原因是:操作系统时区跟JVM的时区不一致. [root@paas244 ~]# timedatectl Local time: Thu 2016-12-29 15:35:44 CST U ...

  8. 使用CXF框架集成Spring实现SOAP Web Service

  9. Mini ORM——PetaPoco笔记

    Mini ORM--PetaPoco笔记 记录一下petapoco官网博客的一些要点.这些博客记录了PetaPoco是如何一步步改进的. 目录: Announcing PetaPoco PetaPoc ...

  10. VS2013 ViewData ViewBag Ajax等关键词报错(当前上下文不存在名称)而且不提示也点不出来,但是可以正常运行,

    这个多数问题是因为 视图 的Web.config 内的配置问题 在Views文件夹下  有一个Web.config文件,把里面的版本号(System.Web.Mvc, Version=5.2.2.0) ...