2016-08-16 41 views
0

私は別のDenseVector上の要素ごとのブール条件に基づいてDenseVectorをスライスしてみてください:条件付きスライス

import breeze.linalg.DenseVector 
    val x = DenseVector(1.0,2.0,3.0) 
    val y = DenseVector(10.0,20,0,30.0) 

    // I want a new DenseVector containing all elements of y where x > 1.5 
    // i.e. I want DenseVector(20,0,30.0) 
    val newy = y(x:>1.5) // does not give a DenseVector but a SliceVector 

のPython/numpyので、私はちょうどあなたがする必要があるブリーズを使用してy[x>1.5]

+0

を読んでください。Breeze APIドキュメントをお読みください。 –

答えて

0

SliceVectorをフィルタリングするための内包のために使用は元のDenseVectorの単なるビューです。新しいDenseVectorを作成するには、

val newy = y(x:>1.5).toDenseVector 
0

を記述します起因DenseVector S

val y = DenseVector(10.0,20,0,30.0) 

val newY = for { 
    v <- y 
    if v > 1.5 
} yield v 

// or to write it in one line 
val newY = for (v <- y if v > 1.5) yield v