Breeze小结

Breeze是scala数值运算库,旨在不牺牲效率的前提下,尽可能通用、简洁和(功能)强大
github地址

1
2
3
4
5
<dependency>
<groupId>org.scalanlp</groupId>
<artifactId>breeze_2.11</artifactId>
<version>0.13.2</version>
</dependency>

Vector

  • 所有向量都是列向量

  • 子向量可以切片和更新

1
2
3
4
5
val x = DenseVector.zeros[Double](5)
x(3 to 4) := .5
x(0 to 1) := DenseVector(.1,.2)

Matrix

  • 分配不合适的大小会报错

  • 子矩阵可以切片和更新

1
2
3
val m = DenseMatrix.zeros[Int](5,5)
m(4,::) := DenseVector(1,2,3,4,5).t

操作

操作

广播

进行column-wise 或者 row-wise 级的操作,操作符为 $$,$$在哪个轴就是对该轴数据操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
scala> import breeze.stats.mean
scala> val dm = DenseMatrix((1.0,2.0,3.0),
(4.0,5.0,6.0))
scala> val res = dm(::, *) + DenseVector(3.0, 4.0)
breeze.linalg.DenseMatrix[Double] =
4.0 5.0 6.0
8.0 9.0 10.0
scala> res(::, *) := DenseVector(3.0, 4.0)
scala> res
breeze.linalg.DenseMatrix[Double] =
3.0 3.0 3.0
4.0 4.0 4.0
scala> mean(dm(*, ::))
breeze.linalg.DenseVector[Double] = DenseVector(2.0, 5.0)