본문 바로가기
Python/Numpy

Numpy 기능 - Slicing

by 하니__ 2024. 4. 4.

 

 

리스트 등 에서 꼭 전체가 필요한 것만은 아니다

 

그럴때에는 필요한 부분만 가져다 쓰면 된다

 

 

 [ 행 , 열 ] 이라는 의미이며

 

~ : ㅁ 는 ㅁ 제외한 앞부분 모두(포함하기 위해서+1을 해주자)

ㅁ : ~ 는 ㅁ 포함한 뒷부분 모두

 

를 의미한다

 

:

 

하나만 있다면 앞부분,뒷부분 모두 라는 의미이므로 전체를 의미한다

 

 

 

문자열의 경우 인덱스 번호 1개만 불러내면 '홍' '길' '동' 처럼 나오게 되는데

 

2개를 불러내도 '길' '동' 처럼 나오게 된다

 

그때는 [시작글자 인덱스 : 끝글자 인덱스]를 해주면 된다

 

물론 마지막 인덱스 번호는 미포함이기에 +1을 해준다

 

그래서 1 : 2+1은

 

두번째 글자인 '길'과 세번째 글자인 '동'이 합쳐져 나와 '길동'이 된다

 

 

숫자도 같은식으로 

 

[2: 5+1]로 입력하면 2번 인덱스서부터 5번 인덱스까지의 숫자를 출력이라는 의미로

2, 13, 4, 18만 따로 출력이 가능하다

 

다차원배열에서는 [ 1, 1 : 3+1 ] 로 입력하게 되면

인덱스 1번행의 1번 열부터 3번열까지의 수로

22, 39, 93번만 출력되게 된다

 

 

0번 행과 2번 행만 출력하고 싶다면

X[ ]안에 [ 0, 2 ]를 집어넣어

X[ [ 0, 2 ] ]를 하면 0행과 2행만이 출력이 되며

(열은 생략한다)

 

1,3,4 열만 나타내고 싶다면

X[ 행부분은 : 를 넣고 , [1, 3, 4] 를 넣어]

X[ : , [ 1, 3, 4 ] ] 로 넣어 해당 열만 출력이 가능하다

 

 

slicing 할때 주의점

X의 한 부분을 Y로 떼와서

Y를 수정하면

X 또한 같이 수정된다

 

이런 사태를 방지하기 위해 따로 복사를 하여 작업한다

똑같이 슬라이싱할때 .copy( ) 를 붙여넣어 복사한다

 

이렇게 수정하면 원본은 바뀌지 않는다

 

원하는 부분만 잘라내어 사용할 수 있다

 

0,2번행과

0~2번열까지의 수만 필요하기에

 

[ 행 , 열 ] 부분에서

[ [ 0,2 ] , [ 0, 1, 2 ] ]

로 적어준다

 

열 부분에서는 중간중간 빠진 부분이 없는 연속된 관계기때문에

 

: 2+1 로 적어주어도 된다