ofdim을 사용하여 scala에서 다차원 배열을 만드는 방법에 대해 읽었지만 모든 배열의 크기가 같지 않게하려면 어떻게해야합니까? 다음과 같은 다양한 크기의 배열을 만들 수는 있지만 아무 것도 찾을 수 없었습니다.Scala의 배열의 다원 배열 배열
dist = [[1,2,3],
[10, 11, 13, 15, 16, 17, 19],
[25]]
ofdim을 사용하여 scala에서 다차원 배열을 만드는 방법에 대해 읽었지만 모든 배열의 크기가 같지 않게하려면 어떻게해야합니까? 다음과 같은 다양한 크기의 배열을 만들 수는 있지만 아무 것도 찾을 수 없었습니다.Scala의 배열의 다원 배열 배열
dist = [[1,2,3],
[10, 11, 13, 15, 16, 17, 19],
[25]]
당신은 항상 tabulate
를 사용하여 다음 인덱스에 기초하여 원하는 크기를 구축하거나, 배열 자체에 크기 목록에서 매핑 할 수 있습니다 :
Array.tabulate(4)(i => Array.range(0,i))
// Array[Array[Int]] = Array(Array(), Array(0), Array(0, 1), Array(0, 1, 2))
Array(3,7,1).map(i => Array.range(0,i))
// Array[Array[Int]] = Array(Array(0, 1, 2), Array(0, 1, 2, 3, 4, 5, 6), Array(0))
는 JVM은 없습니다 진정한 다차원 배열, 배열의 배열 - 그래서 스칼라도 않습니다. 할 수있는 한 자유롭게 구축하십시오.
왜 var hist = Array.tabulate (9) (i => Array (0))를 사용하고 hist를 인쇄하려고 할 때 [[I @ 5b895cb9 – vyruz
@vyruz -'Array'는' toString' 메소드를 호출합니다. REPL은 단순히'toString'을 호출하는 것이 아니라 자체 인쇄 루틴을 호출합니다; 당신은 println (hist.map (_. mkString (",")). mkString ("\ n"))'또는 일부 요소를 볼 수 있습니다. –
이 배열 [List [Int]]와 같은 목록의 배열로 이동하는 것이 좋습니다. 내부 목록은 필요에 따라 가변 길이가 될 수 있습니다. 또는 목록의 목록, 외부 배열의 길이를 미리 알 수없는 경우.
하면
에 대한def histo(bounds: Array[Int], data: Array[Int]): Array[Array[Int]] = {
bounds match {
case Array(h) => Array(data)
case Array(h, t @ _*) => val (l,r) = data.partition(_ < h)
l +: histo(t.toArray,r)
}
}
따라서,이 같은 partition
의 반복 사용 (https://stackoverflow.com/a/24540089/3189923 내 전체 관련, 대답을 참조), 고려 히스토그램을 구축하기위한 컬렉션에서 값을 비닝 에 고려
val bounds = Array(10, 20, 30) val dist = Array(1, 2, 3, 10, 11, 13, 15, 16, 17, 19, 25)
우리가 그
histo(bounds, dist)
res: Array[Array[Int]] = Array(Array(1, 2, 3),
Array(10, 11, 13, 15, 16, 17, 19),
Array(25))
다양한 길이 또는 크기의 배열 배열? –
다양한 길이의 배열 배열. 항목을 저장소에 넣을 때 사용합니다. 히스토그램 만들기와 같습니다. – vyruz