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 | 多重右端的三角线性方程组求解 |
向量与向量
- 加:+ 减:- 点乘: :* 点除::/ 向量乘法: * 向量除法: /
矩阵与矩阵
- 加:+ 减:- 点乘: :* 点除::/ 矩阵乘法: * 矩阵除法: /
矩阵或向量与数值
- 加:+ 减:- 乘:* 除:/
矩阵和向量
- 加:+ 减:- 点乘: :* 点除::/ 矩阵乘法: * 矩阵除法: /
- Matrix(*, ::)+Vector 逐行
- Matrix(::,
*)+Vector 逐列
Breeze库API总结(Spark线性代数库)(转载)的更多相关文章
- Chai.js断言库API中文文档【转载】
基于chai.js官方API文档翻译.仅列出BDD风格的expect/should API.TDD风格的Assert API由于不打算使用,暂时不放,后续可能会更新. BDD expect和shoul ...
- Raphael Js矢量库API简介:
Raphael Js矢量库API简介:Raphael Javascript 是一个 Javascript的矢量库. 2010年6月15日,著名的JavaScript库ExtJS与触摸屏代码库项目jQT ...
- 第三方库API接口
第三方库API接口 InfluxDB提供了各种语言的Http API接口的封装.具体可以看这里: https://docs.influxdata.com/influxdb/v0.10/clients/ ...
- Robot Framework - 3 - 测试库API
08- 创建测试库--发布测试库 ***** 测试库文档 为了便于维护,测试库文档应该从源代码中生成. Robot Framework 有自己的文档工具 libdoc.py生成 API 文档. 一个 ...
- 各大巨头电商提供的IP库API接口-新浪、搜狐、阿里
新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js (不可用)新浪多地域测试方法:http://i ...
- 【Mac + Python3.6 + ATX基于facebook-wda】之IOS自动化(三):facebook-wda库--API学习以及附录:Github上对WDA的问题解答
下面简单介绍facebook-wda库--API的学习 import wda # debug模式,会在run运行时控制台生成消息 wda.DEBUG = False # False 关闭,True开启 ...
- 掌握Spark机器学习库(课程目录)
第1章 初识机器学习 在本章中将带领大家概要了解什么是机器学习.机器学习在当前有哪些典型应用.机器学习的核心思想.常用的框架有哪些,该如何进行选型等相关问题. 1-1 导学 1-2 机器学习概述 1- ...
- 【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第32章 STM32H7的TIM定时器基础知识和H ...
- 【STM32H7教程】第29章 STM32H7的USART串口基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第29章 STM32H7的USART串口基础知识和 ...
随机推荐
- Git系列教程一 入门与简介
一.版本控制引入 可能我们都会有这样的经历:创建了一个文件,并对它做了多次更改,当我们想回到其中的某一次更改的时候,由于时间太长记不得那次更改的内容,于是我们在每次大的更改的时候,会创建一个文件的副本 ...
- NGUI 层级关系控制
NGUI元素的遮挡情况是不依赖空间关系,所以在NGUI上添加特效有时候特别蛋疼,特别是美术同学还要依赖空间关系来控制特效效果,那先看看看NGUI的层级是怎么处理的,不过下面的描述都是针对单个相机下的P ...
- Centos下防止暴力破解密码 - Denyhost
参考: http://www.centoscn.com/shell/2015/0703/5781.html 从http://sourceforge.net/projects/denyhosts/fil ...
- 上传图片插件鼠标手cursor:pointer;不生效
问题: 只在谷歌里失效; 解决: font-size:0; 参考: http://jingyan.baidu.com/article/48b558e32fabb67f38c09a81.html htt ...
- C#程序以管理员权限运行
原文:C#程序以管理员权限运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员 ...
- ACM集训的第。。。诶~不知道第几题=.=
题目: 郭铮鹏认为排序是一种很频繁的计算任务,所以他考虑了一个简单的问题:现在最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2 ...
- LINUX 设置ll的时候显示日期的格式
1.临时更改显示样式,当回话结束后恢复原来的样式 export TIME_STYLE='+%Y-%m-%d %H:%M:%S' # 直接在命令中执行即可 2.永久改变显示样式,更改后的效果会保存 ...
- iOS获取当前AppStore版本号与更新
- (void)checkUpdateWithAppID:(NSString *)appID success:(void (^)(NSDictionary *resultDic , BOOL isNe ...
- 如何使用JDBC链接数据库
1.加载数据库驱动 不同的数据库加载的驱动不一样 Class.forName(com.MySQL.jdbc.Driver) Class.forName(oracle.jdbc.driver.Oracl ...
- 改造过的JS颜色选择器
项目中用到颜色选择功能,在网上找了个颜色选择器,自己改了改代码.做成了一个可动态加载的颜色选择器. 把代码贴上,当是记录. /*Copyright(c)2009,www.supersite.me*/ ...