2016-04-29 4 views
0

Я пытаюсь что-то сделать в scala.Scala: метод и метод toArray

scala> val x = Array(Array(8.524, 6.375, 17.043), Array(1.754, 3.509, -1.754), Array(12.69, -12.69, 25.38),Array(4.355, 3.687, 2.876)) 
x: Array[Array[Double]] = Array(Array(8.524, 6.375, 17.043), Array(1.754, 3.509, -1.754), Array(12.69, -12.69, 25.38), Array(4.355, 3.687, 2.876)) 

scala> val y = Array(1.0, -1.0, 2.0) 
y: Array[Double] = Array(1.0, -1.0, 2.0) 

Я пытался добавить их как:

Array(Array(8.524 + 1.0, 6.375 + (-1.0), 17.043 + 2),Array(1.754 + 1.0, 3.509 + (-1.0), -1.754 + 2), Array(....)......) 

Чтобы сделать вещь выше, мой код

val result = for(i <- 0 until x.length) yield { 
    for(j <- 0 until y.length) yield x(i)(j) + y(j) 
} 

результат

result: scala.collection.immutable.IndexedSeq[scala.collection.immutable.IndexedSeq[Double]] = Vector(Vector(9.524, 5.375, 19.043), Vector(2.754, 2.509, 0.246), Vector(13.69, -13.69, 27.38), Vector(5.355, 2.687, 4.8759999999999994)) 

Я использовал toArray метод по result, но получите Array[scala.collection.immutable.IndexedSeq[Double]] = Array(Vector(9.524, 5.375, 19.043), Vector(2.754, 2.509, 0.246), Vector(13.69, -13.69, 27.38), Vector(5.355, 2.687, 4.8759999999999994))

Но я хочу получить Array(Array[Double]), как я могу это сделать?

Кроме того, я попытался преобразовать весь элемент result в Math.tan

val z = Array(1, 100, 200) Если

я могу использовать z.map{x => Math.tan(x)} достичь.

Если форму массива, как показано выше, как я могу сделать то же самое?

Спасибо за ваше время.

+0

Результат для понимания зависит от типа коллекции, которую вы передаете. '0, пока x.length' не будет' Range' (который является 'IndexedSeq'). Исходя из этого, результатом будет «IndexedSeq», а не «Array». –

+0

Так что это объясняет. Thanks –

ответ

0

Просто используйте:

val z = x.map(arr => (arr zip y).map{case (a, b) => a + b}) 

Это даст вам Array[Array[Double]]. Затем вы можете использовать:

z.map(_.map(Math.tan)) 

применять Math.tan() метод на каждого элемента массива.

+0

Очень полезно для меня –

Смежные вопросы