2016-04-29 10 views
0

私はスカラーで何かをしようとしています。スカラ:toArrayメソッドとマップメソッド

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(....)......) 

以上のことを行うには、私のコードは、結果は私がtoArrayメソッドを使用

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)) 

ある

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

です:

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) 

は、私は次のようにそれらを追加しようとしました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])を取得したいと思います、どうすればいいですか?

さらに、私は私が達成しz.map{x => Math.tan(x)}を使用することができますMath.tan

val z = Array(1, 100, 200)場合にresultのすべての要素を変換しようとしました。

上記のような配列の形が得られた場合、どうすれば同じことができますか?

あなたのお時間をいただきありがとうございます。

+0

結果の解釈は、forに渡すコレクションのタイプによって異なります。 '0〜x.length'が' Range'(これは 'IndexedSeq'です)です。それに基づいて、結果は 'IndexedSeq'であり、' Array'ではありません。 –

+0

それでそれを説明します。ありがとう –

答えて

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

私のために非常に便利です –

関連する問題