日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spark | scala | 线性代数库Breeze学习

發布時間:2024/1/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spark | scala | 线性代数库Breeze学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在學習spark,對線性代數庫Breeze做了學習,介紹下常用的函數

前提,使用Breeze庫,必須導入相關的包

import breeze.linalg._
import breeze.numerics._
1
2
最基礎的操作:矩陣,向量,數組的轉換
1、DenseMatrix.zerosDouble

全為零的n*m的矩陣,Double類型

2、DenseVector.zerosDouble

全為零的n個數組成的向量,Double類型

3、DenseVector.onesDouble

全為1的n個數組成的向量,Double類型

4、DenseVector.fill(n){5.0}

產生向量,長度為n,用5.0來填充

5、DenseVector.range(start,stop,step)?
DenseVector.rangeD(start,stop,step)

產生序列向量?
6、DenseVector.linspace(start,stop,numvals)

產生向量,有numvals個數的向量

7、DenseMatrix.eyeDouble

產生n*n的矩陣,對角為1,Double類型

8、diag(DenseVector(1.0,2.0,3.0))

產生主對角元素為1.0,2.0,3.0的矩陣

9、DenseMatrix((1.0,2.0),(3.0,4.0))

產生矩陣

10、DenseVector(1,2,3,4)

產生向量

11、DenseVector(1,2,3,4).t

向量轉置

12、DenseVector.tabulate(3){i => 2*i}

scala> DenseVector.tabulate(3){i => 2*i}
1
res33: breeze.linalg.DenseVector[Int] = DenseVector(0, 2, 4)

結果為:0,2,4

13、DenseMatrix.tabulate(3,2){case(i,j) => i+j}

scala> DenseMatrix.tabulate(3,2){case(i,j) => i+j}
res34: breeze.linalg.DenseMatrix[Int] =
0 ?1
1 ?2
2 ?3

行列數相加

14、new DenseVector(Array(1,2,3,4))?
從數組創建向量

scala> new DenseVector(Array(1,2,3,4))
res35: breeze.linalg.DenseVector[Int] = DenseVector(1, 2, 3, 4)

15、new DenseMatrix(2,3,Array(11,12,13,21,22,23))?
從數組創建矩陣

scala> new DenseMatrix(2,3,Array(11,12,13,21,22,23))
res36: breeze.linalg.DenseMatrix[Int] =
11 ?13 ?22
12 ?21 ?23

16、DenseVector.rand(4)?
得到0到1的隨機向量,長度為4

scala> DenseVector.rand(4)
res37: breeze.linalg.DenseVector[Double] = DenseVector(0.9838289972536518, 0.798555117073358, 0.30308183931925403, 0.7958095551517774)

17、DenseMatrix.rand(2,3)?
得到0到1的隨機矩陣

scala> DenseMatrix.rand(2,3)
res38: breeze.linalg.DenseMatrix[Double] =
0.3891370890132193 ?0.06732600444704517 ?0.2136759825764527
0.587145241786718 ? 0.8670050354290917 ? 0.5494899108312414

Breeze元素訪問
1、指定位置

scala> val a = DenseVector(1,2,3,4,5)
a: breeze.linalg.DenseVector[Int] = DenseVector(1, 2, 3, 4, 5)

scala> a(2)
res44: Int = 3

2、向量子集

scala> a(1 to 2)
res40: breeze.linalg.DenseVector[Int] = DenseVector(2, 3)

scala> a(1 until 2)
res41: breeze.linalg.DenseVector[Int] = DenseVector(2)

scala> a.slice(1,2)
res42: breeze.linalg.DenseVector[Int] = DenseVector(2)

3、按照指定步長取子集

scala> a(3 to 1 by -1)
res45: breeze.linalg.DenseVector[Int] = DenseVector(4, 3, 2)

4、指定開始位置至結尾

scala> a(2 to -1 )
res48: breeze.linalg.DenseVector[Int] = DenseVector(3, 4, 5)

5、最后一個元素

scala> a(2 to -1 )
res48: breeze.linalg.DenseVector[Int] = DenseVector(3, 4, 5)

6、矩陣指定列

scala> val a = DenseMatrix((1,2,3,4,5),(3,4,5,6,7),(5,6,7,8,9))
a: breeze.linalg.DenseMatrix[Int] =
1 ?2 ?3 ?4 ?5
3 ?4 ?5 ?6 ?7
5 ?6 ?7 ?8 ?9

scala> a(::,2)
res1: breeze.linalg.DenseVector[Int] = DenseVector(3, 5, 7)

Breeze元素操作
1、a.reshape(3,2)?
調整矩陣形狀

scala> val a = DenseMatrix((2,3),(3,4),(6,7))
a: breeze.linalg.DenseMatrix[Int] =
2 ?3
3 ?4
6 ?7


scala> val a = DenseMatrix((2,3),(3,4),(6,7))
a: breeze.linalg.DenseMatrix[Int] =
2 ?3
3 ?4
6 ?7

2、a.toDenseVector?
矩陣轉成向量

scala> val a = DenseMatrix((2,3),(3,4),(6,7))
a: breeze.linalg.DenseMatrix[Int] =
2 ?3
3 ?4
6 ?7

scala> a.toDenseVector
res3: breeze.linalg.DenseVector[Int] = DenseVector(2, 3, 6, 3, 4, 7)

3、lowerTriangular?
下三角矩陣

scala> val b = DenseMatrix((1,2,3,4,5,6),(2,3,4,5,6,7),(3,4,5,6,7,8))
b: breeze.linalg.DenseMatrix[Int] =
1 ?2 ?3 ?4 ?5 ?6
2 ?3 ?4 ?5 ?6 ?7
3 ?4 ?5 ?6 ?7 ?8

scala> lowerTriangular(b)
res7: breeze.linalg.DenseMatrix[Int] =
1 ?0 ?0
2 ?3 ?0
3 ?4 ?5

4、upperTriangular?
上三角矩陣

scala> upperTriangular(b)
res8: breeze.linalg.DenseMatrix[Int] =
1 ?2 ?3
0 ?3 ?4
0 ?0 ?5

5、b.copy?
復制矩陣

scala> b.copy
res9: breeze.linalg.DenseMatrix[Int] =
1 ?2 ?3 ?4 ?5 ?6
2 ?3 ?4 ?5 ?6 ?7
3 ?4 ?5 ?6 ?7 ?8


6、diag(a)?
取對角線元素

scala> val c = DenseMatrix((1,2,3),(2,3,4),(3,4,5))
c: breeze.linalg.DenseMatrix[Int] =
1 ?2 ?3
2 ?3 ?4
3 ?4 ?5

scala> diag(c)
res12: breeze.linalg.DenseVector[Int] = DenseVector(1, 3, 5)

7、c(1 to 4 ) := 5.0?
子集賦值,將c中的第2個數到第五個數賦值為5.0

scala> val d = DenseVector(1,2,3,4,5,6,7,8,8)
d: breeze.linalg.DenseVector[Int] = DenseVector(1, 2, 3, 4, 5, 6, 7, 8, 8)

scala> d(1 to 4) := ?5
res18: breeze.linalg.DenseVector[Int] = DenseVector(5, 5, 5, 5)

scala> d
res21: breeze.linalg.DenseVector[Int] = DenseVector(1, 5, 5, 5, 5, 6, 7, 8, 8)

8、d(1 to 4) := DenseVector(1,2,3)?
子集賦向量

scala> d(1 to 4):=DenseVector(1,2,3,4)
res26: breeze.linalg.DenseVector[Int] = DenseVector(1, 2, 3, 4)

scala> d
res27: breeze.linalg.DenseVector[Int] = DenseVector(1, 1, 2, 3, 4, 6, 7, 8, 8)

9、a(1 to 3,1 to 3) :=5?
矩陣賦值

scala> b(1 to 2,1 to 3):= 6
res30: breeze.linalg.DenseMatrix[Int] =
6 ?6 ?6
6 ?6 ?6

scala> b
res31: breeze.linalg.DenseMatrix[Int] =
1 ?2 ?3 ?4 ?5 ?6
2 ?6 ?6 ?6 ?6 ?7
3 ?6 ?6 ?6 ?7 ?8

10、a(::,2) := 5?
矩陣列賦值

scala> b(::,2) := 7
res32: breeze.linalg.DenseVector[Int] = DenseVector(7, 7, 7)

scala> b
res33: breeze.linalg.DenseMatrix[Int] =
1 ?2 ?7 ?4 ?5 ?6
2 ?6 ?7 ?6 ?6 ?7
3 ?6 ?7 ?6 ?7 ?8

11、DenseMatrix.vertcat(a,b)?
垂直合并

12、DenseMatrix.horzcat(d,e)?
水平合并

13、DenseVector.vertvat(a,b)?
向量連接

數值計算


求和函數


布爾函數


線性代數


一些很基礎的函數,很實用。
---------------------?
作者:茁壯小草?
來源:CSDN?
原文:https://blog.csdn.net/xxzhangx/article/details/74066679?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的spark | scala | 线性代数库Breeze学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。