[Python] 슬라이싱(Slicing)

olxtar·2023년 8월 10일
0
post-thumbnail

Python의 슬라이싱(Slicing)

참고 : [Python]파이썬 슬라이싱(slicing) 기본과 예제




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, \dots 짝수 Row가 된다.
    Column의 경우에는 모든 Column!
    \therefore 짝수 Row, 모든 Column
  • raw_df.values[1::2, :2] : 슬라이싱 시작 위치가 1, 끝 위치가 공백이므로 1번째 Row부터 끝까지의 Row라고 보면된다. 또한 2 Step씩 띄워서 불러오는 것이므로 1,3,5,7, \dots 홀수 Row가 된다.
    Column의 경우에는 2번째까지이므로 Python 규칙에따라 0,1번째 Column이 된다. (즉 위 이미지에서 1번째 Row에서의 파란색 박스 중 빨간색 박스만 제외한 396.90000, 4.98만 가져옴)
    \therefore 홀수 Row, 0,1번째 Column

  • np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]]) : 위에서 언급한 2개의 array를 Horizontal, 즉 가로로 Stacking


결과적으로 쪼개져 있었던 파란색 박스부분의 데이터들이 1개의 Row로, 즉 일렬로 나열된 것을 볼 수 있다.

profile
예술과 기술

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

이런 유용한 정보를 나눠주셔서 감사합니다.

답글 달기