2016-08-16 8 views
0

Я стараюсь нарезать DenseVector на основе поэлементного логическое условие на другой DenseVector:Условный нарезка в Scala Breeze

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 y(x:>1.5) - это просто взгляд на оригинал DenseVector. Чтобы создать новый DenseVector, используйте

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

Использование Breeze вы должны использовать для постижений для фильтрации DenseVector сек

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