使用breeze库创建矩阵和向量
引入依赖
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>2.1.1</version>
</dependency>
导包
import breeze.linalg._
import breeze.numerics._
创建矩阵
// 创建一个两行三列的全零矩阵
val m1: DenseMatrix[Double] = DenseMatrix.zeros[Double](2, 3)
/*
0.0 0.0 0.0
0.0 0.0 0.0
*/
// 创建一个单位矩阵
val m2: DenseMatrix[Double] = DenseMatrix.eye[Double](3)
/*
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
*/
// 创建一个对角矩阵,指定对角元素
val m3: DenseMatrix[Double] = 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
*/
// 根据索引创建矩阵
val m4: DenseMatrix[Int] = DenseMatrix.tabulate(3, 2) { _ + _ }
/*
0 1
1 2
2 3
*/
//根据数组创建矩阵
val m5 = new DenseMatrix(2, 3, Array(11, 12, 13, 21, 22, 23))
/*
11 13 22
12 21 23
*/
// 创建一个随机数矩阵
val m6: DenseMatrix[Double] = DenseMatrix.rand[Double](2, 3)
/*
0.13513563569969333 0.22298874038253658 0.8573576545390262
0.6438528500067331 0.6425546711979311 0.9065370260969197
*/
创建向量
// 创建一个长度为3的全零向量
val v1: DenseVector[Double] = DenseVector.zeros[Double](3)
/*
DenseVector(0.0, 0.0, 0.0)
*/
// 创建一个长度为3值为1的向量
val v2: DenseVector[Double] = DenseVector.ones[Double](3)
/*
DenseVector(1.0, 1.0, 1.0)
*/
// 根据数值来填充向量
val v3: DenseVector[Double] = DenseVector.fill(3) { 5.0 }
/*
DenseVector(5.0, 5.0, 5.0)
*/
// 通过序列来创建向量 [1, 10) 步长为2
val v4: DenseVector[Int] = DenseVector.range(1, 10, 2)
/*
DenseVector(1, 3, 5, 7, 9)
*/
// 指定行元素创建向量
val v5: DenseVector[Int] = DenseVector(1, 2, 3, 4)
/*
DenseVector(1, 2, 3, 4)
*/
// 行向量转换为列向量
val v6: Transpose[DenseVector[Int]] = DenseVector(1, 2, 3, 4).t
/*
Transpose(DenseVector(1, 2, 3, 4))
*/
// 根据索引创建向量
val v7: DenseVector[Int] = DenseVector.tabulate(3) { _ * 2 }
/*
DenseVector(0, 2, 4)
*/
// 根据数组创建向量
val v8 = new DenseVector(Array(1, 2, 3, 4))
/*
DenseVector(1, 2, 3, 4)
*/
// 创建一个长度为4的随机数向量
val v9: DenseVector[Double] = DenseVector.rand[Double](4)
/*
DenseVector(0.5221265821641761, 0.8922440399310629, 0.9464378000643416, 0.8828893112887053)
*/