Alternativa Scala para usar la variable de índice -- scala camp Relacionados El problema

scala alternative for using index variable


2
vote

problema

Español

Supongamos que tenemos matriz, que tiene columna base y columna no base. Y necesitamos la capacidad de obtener la base de la matriz o la no base. ¿Qué columnas son bases especificadas en matriz declaradas como var base: Array[Boolean]

Actualmente lo estoy haciendo como:

    def getMatrix(matrix: DenseMatrix[Double], pred: Boolean, m: Int, n: Int): DenseMatrix[Double] = {     var a = DenseMatrix.zeros[Double](m, n)     var scanPos: Int = 0     var insertPos: Int = 0     for (el <- base) {       if (el == pred) {         a(::, insertPos) := matrix(::, scanPos)         insertPos += 1       }       scanPos += 1     }     return a   }   

Pero este código es feo y realmente lo odio. Debe haber una solución más elegante y lo solicito

PS: Clase Densematrix de Breeze Library y puede considerarse como una matriz 2-D

Original en ingles

Suppose we have matrix, which has basis column and non-basis column. And we need ability to obtain basis part of matrix or non-basis. Which colums are bases specified in array declared like var base: Array[Boolean]

Currently I'm doing it like:

  def getMatrix(matrix: DenseMatrix[Double], pred: Boolean, m: Int, n: Int): DenseMatrix[Double] = {     var a = DenseMatrix.zeros[Double](m, n)     var scanPos: Int = 0     var insertPos: Int = 0     for (el <- base) {       if (el == pred) {         a(::, insertPos) := matrix(::, scanPos)         insertPos += 1       }       scanPos += 1     }     return a   } 

but this code is ugly and I really hate it. there must be a more elegant solution and i'm asking for it

PS: DenseMatrix class from breeze library and may be considered as 2-D Array

  

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 

No estoy seguro de si Breeze ofrece una mejor manera de hacer esto, pero podrías hacer algo así:

    def getMatrix(matrix: DenseMatrix[Double], pred: Boolean, m: Int, n: Int): DenseMatrix[Double] = {     val data = base       .zipWithIndex       .filter(_._1 == pred)       .map(b => matrix(::, b._2).toArray)       .flatten      new DenseMatrix(m, n, data)   }   

Algo así debería funcionar también:

    def getMatrix(matrix: DenseMatrix[Double], pred: Boolean, m: Int, n: Int): DenseMatrix[Double] = {     val a = DenseMatrix.zeros[Double](m, n)      for {       x <- base.zipWithIndex.filter(_._1 == pred).zipWithIndex       ((el, matrixIndex), newIndex) = x     } yield a(::, newIndex) := matrix(::, matrixIndex)      a   }   
 

I'm not sure if breeze offers a better way to do this, but you could do something like this:

  def getMatrix(matrix: DenseMatrix[Double], pred: Boolean, m: Int, n: Int): DenseMatrix[Double] = {     val data = base       .zipWithIndex       .filter(_._1 == pred)       .map(b => matrix(::, b._2).toArray)       .flatten      new DenseMatrix(m, n, data)   } 

Something like this should work too:

  def getMatrix(matrix: DenseMatrix[Double], pred: Boolean, m: Int, n: Int): DenseMatrix[Double] = {     val a = DenseMatrix.zeros[Double](m, n)      for {       x <- base.zipWithIndex.filter(_._1 == pred).zipWithIndex       ((el, matrixIndex), newIndex) = x     } yield a(::, newIndex) := matrix(::, matrixIndex)      a   } 
 
 

Relacionados problema

4  Procesamiento concurrente en Scala  ( Concurrent processing in scala ) 
Estoy intentando usar la programación concurrente en Scala. Basado en este ejemplo aquí en StackOverFlow, hice un programa basado en problema 1 de Project...

0  Consultando una operación continuamente en funcionamiento para su estado actual / valor en Scala  ( Querying a continously running operation for its current state value in scala ) 
Tengo un procedimiento que actualiza continuamente un valor. Quiero poder consultar periódicamente la operación para el valor actual. En mi ejemplo particular...

-3  ¿Cómo acceder a la base de datos de MongoDB en Scala?  ( How to access mongodb database in scala ) 
Me gustaría saber cómo acceder a la base de datos Mongodb desde una aplicación Scala Swing. Soy nuevo en Scala.i ha creado una base de datos llamada MyDB en M...

2  ¿Dónde pongo archivos HTML en mi carpeta de aplicaciones web para un proyecto de elevación con Maven?  ( Where do i put html files in my web app folder for a lift project with maven ) 
Soy nuevo para levantar el marco para Scala. Por alguna razón, index.html reside en el directorio de la aplicación web, y cuando inicie el embarcadero, http:...

32  Tipo de unidad Scala  ( Scala unit type ) 
Yo uso Opencsv para analizar archivos CSV, y mi código es while( (line = reader.readNext()) != null ) { .... } Tengo una advertencia de compilador dici...

3  Fusionar múltiples entradas individuales a una entrada única en la guía de datos de Spark  ( Merge multiple individual entries to single entry in spark dataframe ) 
asume que tengo una partición que se parece a esto part1: {"customerId":"1","name":"a"} {"customerId":"2","name":"b"} asumir que me gustaría cambiar e...

37  Hibernado y scala [cerrado]  ( Hibernate and scala ) 
cerrado . Esta pregunta debe ser más enfocado . Actualmente no está aceptando respuestas. ...

6  ¿Qué partes de una solicitud de Java deben ser escritas en Scala?  ( What parts of a java application should be written in scala ) 
Estoy escribiendo una aplicación Java usando Struts 2, pero ahora me gustaría hacerlo un Java y Amp un híbrido; Proyecto SCALA en su lugar. No tengo mucha exp...

34  ¿Hay buenos puntos de referencia de Clojure?  ( Are there any good clojure benchmarks ) 
Editar: Los puntos de referencia de Clojure están arriba en El juego de puntos de referencia . He hecho esta pregunta Wiki de la comunidad e invite a o...

17  Valores sustitutos en una cadena con marcadores de posición en Scala  ( Substitute values in a string with placeholders in scala ) 
Acabo de empezar a usar Scala y desea comprender mejor el enfoque funcional para la resolución de problemas. Tengo pares de cuerdas, el primero tiene marcador...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos