참고 : [Python]파이썬 슬라이싱(slicing) 기본과 예제
슬라이싱(slicing) or 슬라이스(slice)는 연속적인 객체 (List, Tuple, String)들의 범위를 지정해 선택해서 객체들을 가져오는 방법 및 표기법
슬라이싱을 하면 새로운 객체를 생성하게 된다.
temp
라는 연속적인 객체 (List, Tuple, String)가 있다고 했을 때 Slicing의 기본 사용법은 아래와 같음
temp[start : end : step]
start
: 슬라이싱 시작할 위치end
: 슬라이싱 끝낼 위치 (해당 값의 위치는 미포함)step
: 시작위치부터 끝 위치까지 몇칸 간격으로 불러올지아래와 같은 DataFrame raw_df
가 있다고 해보자. (Boston Housing Dataset)
아쉽게도 해당 데이터에서 1개의 Row로 사용되어야하는 값들은 파란색 박스이다.
즉
X로 사용되어야하는 값은 파란색 박스, 빨간색 박스는 제외!
Y로 사용되어야 하는 값은 빨간색 박스
따라서 이 raw_df
를 이용하여 홀수번째 Row가 짝수번째 Row 우측으로 붙는...그러한 정상적인 Data를 다시 만들어보자
data = np.hstack( [ raw_df.values[::2, :], raw_df.values[1::2, :2]] )
np.hstack
, 즉 가로로 Stacking하는 함수를 이용하여 저 쪼개져 있는 파란색 박스를 1개의 Row로 만들고자 한다.
raw_df.values[::2, :]
: 슬라이싱 시작, 끝 위치가 공백이므로 모든 Row라고 보면된다. 즉 모든 Row를 불러오되 2 Step씩 띄워서 불러오는 것이므로 0,2,4,6, 짝수 Row가 된다.raw_df.values[1::2, :2]
: 슬라이싱 시작 위치가 1, 끝 위치가 공백이므로 1번째 Row부터 끝까지의 Row라고 보면된다. 또한 2 Step씩 띄워서 불러오는 것이므로 1,3,5,7, 홀수 Row가 된다.
Column의 경우에는 2번째까지이므로 Python 규칙에따라 0,1번째 Column이 된다. (즉 위 이미지에서 1번째 Row에서의 파란색 박스 중 빨간색 박스만 제외한 396.90000, 4.98만 가져옴)
홀수 Row, 0,1번째 Column
np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
: 위에서 언급한 2개의 array를 Horizontal, 즉 가로로 Stacking
결과적으로 쪼개져 있었던 파란색 박스부분의 데이터들이 1개의 Row로, 즉 일렬로 나열된 것을 볼 수 있다.
이런 유용한 정보를 나눠주셔서 감사합니다.