본문 바로가기
개발/Kotlin

Windowed 함수

by 밥버검 2021. 4. 28.
반응형

 

설명

컬렉션 객체에서 주어진 사이즈로 리스트를 가져올수 있게 해주는것 

시계열 데이터를 단계별로 처리하는 데 유용하다고 함

 

인자값

  • size : 각 윈도우에 포함될 원소의 개수 
  • step : 각 단계마다 전진할 원소의 개수(기본 1개)
  • partialWindows : 나뉘어 있는 마지막 부분이 윈도우에 필요한 만큼의 원소 개수를 갖지 못한 경우, 해당(= 마지막) 부분을 그대로 유지할지 여부를 알려주는 불리언 값, 기본값은 false

 

@Test
fun windowed() {

	val range = 0..10

    val temp = range.windowed(3, 3)

    assertThat(range.windowed(3, 3),
    	contains(listOf(0,1,2), listOf(3,4,5), listOf(6,7,8)))

 }

 

 

val temp = range.windowed(3, 3, true)
  • 마지막 요소도 그대로 유지할것인지 유지하면 이렇게 4번째 요소에 9,10이 남게됨

 

@Test
fun windowed() {

	val range = 0..10
    val temp = range.windowed(3, 3)

	assertThat(
    	range.windowed(3, 3),
        contains(listOf(0, 1, 2), listOf(3, 4, 5), listOf(6, 7, 8))
    )

    val temp2 = range.windowed(3, 3) { it.average() }

	assertThat(
    	temp2,
        contains(1.0, 4.0, 7.0)
    )

    val temp3 = range.windowed(3,1)
	
    assertThat(
    	temp3,
        contains(listOf(0,1,2), listOf(1,2,3), listOf(2,3,4),
        	listOf(3,4,5), listOf(4,5,6), listOf(5,6,7),
            listOf(6,7,8), listOf(7,8,9), listOf(8,9,10)
        )
    )

    val temp4 = range.windowed(3,1) {it.average()}

	assertThat(
    	temp4,
        contains(1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0)
    )
}
반응형

댓글