1D vector: Vec[T] #
import org.saddle._
import org.saddle.order._
Factories #
import org.saddle._
Vec(1, 2, 3)
// res0: Vec[Int] = [3 x 1]
// 1
// 2
// 3
//
Vec(1 to 3 : _*)
// res1: Vec[Int] = [3 x 1]
// 1
// 2
// 3
//
Vec(Array(1,2,3))
// res2: Vec[Int] = [3 x 1]
// 1
// 2
// 3
//
Vec.empty[Double]
// res3: Vec[Double] = Empty Vec
vec.ones(2)
// res4: Vec[Double] = [2 x 1]
// 1.0000
// 1.0000
//
vec.zeros(3)
// res5: Vec[Double] = [3 x 1]
// 0.0000
// 0.0000
// 0.0000
//
vec.rand(20)
// res6: Vec[Double] = [20 x 1]
// 0.9645
// 0.9776
// 0.5634
// 0.6836
// 0.9569
// ...
// 0.5256
// 0.9635
// 0.4267
// 0.0446
// 0.3866
//
Operations #
import org.saddle.ops.BinOps._
Vec(1,2,3) + Vec(4,5,6)
// res7: Vec[Int] = [3 x 1]
// 5
// 7
// 9
//
Vec(1,2,3) * Vec(4,5,6)
// res8: Vec[Int] = [3 x 1]
// 4
// 10
// 18
//
Vec(1,2,3) ** Vec(4,5,6)
// res9: Vec[Int] = [3 x 1]
// 1
// 32
// 729
//
Note above, that you have to import that BinOp
instances.
An alternative set of instances are also available which inline the innermost in Mat and Vec operations:
// The macros package contains instances where the innermost loop is inlined.
import org.saddle._
import org.saddle.macros.BinOps._
Vec(1,2,3) + Vec(4,5,6)
// res11: Vec[Int] = [3 x 1]
// 5
// 7
// 9
//
Vec(1,2,3) * Vec(4,5,6)
// res12: Vec[Int] = [3 x 1]
// 4
// 10
// 18
//
Vec(1,2,3) ** Vec(4,5,6)
// res13: Vec[Int] = [3 x 1]
// 1
// 32
// 729
//
Slicing #
import org.saddle._
import org.saddle.ops.BinOps._
Vec(1,2,3).at(2) // Boxes and keeps NA
// res15: scalar.Scalar[Int] = Value(el = 3) // Boxes and keeps NA
Vec(1,2,3).raw(2)
// res16: Int = 3
Vec(1,2,3).apply(2) // same as raw
// res17: Int = 3 // same as raw
Vec(1,2,3).take(0,2)
// res18: Vec[Int] = [2 x 1]
// 1
// 3
//
Vec(1,2,3).take(1 -> *)
// res19: Vec[Int] = [2 x 1]
// 2
// 3
//
Vec(1,2,3).take(* -> 1)
// res20: Vec[Int] = [2 x 1]
// 1
// 2
//