본문 바로가기

Programming Language/Data & A.I. (데이터 & 인공지능 관련)

넘파이(Numpy) 인덱스 번호 불러오기(인덱싱:indexing)과 자르기(슬라이싱:slicing)

반응형

 오늘은 넘파이(Numpy) 인덱스 번호를 통해서 배열(array) 구성요소를 변형을 해보겠습니다. 넘파이를 자유자재로 이용할 수 있기 위해서는 이 인덱스 번호에 대한 이해가 특히 중요합니다. 우선 세개의 임의의 배열(array)을 만들어 보겠습니다. 

1. 넘파이(numpy) 불러오기

 

작성 코드 공유

# 넘파이 불러오기
import numpy as np

 

 그 전에 가장 먼저 해주어야 하는 코드가 바로 이 넘파이를 import 하는 것입니다. numpy는 파이썬에서 바로 사용할 수 없기에, 사용하기 전에 이렇게 불러오는 코드를 먼저 작성해주어야 사용이 가능합니다. numpy library를 이렇게 불러오고 난 뒤에는 우리가 원하는 배열(array)과 그 구성요소를 지정해주어야 합니다.

 

2. 예시 배열(array) 지정해주기

 

작성 코드 공유

# 예제 넘파이 A, B, C 지정
A = np.array(['재석', '형돈', '홍철', '준하', '하하', '명수', '길', '태호'])
B = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
C = np.array([100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110])

print(A)

실행 코드

 이렇게 세개의 어레이(배열)를 각각 변수 A, B, C에 지정해주고 대표 값인 A를 불러준 모습을 볼 수 있습니다. 잘 출력되는 모습을 보고 배열이 변수에 잘 저장된 것을 확인할 수 있었습니다. 여기서 조금 주목해야할 점은 배열의 인덱스 값은 꼭 float, integer 값일 필요가 없다는 점 입니다.  string 값도 충분히 배열 안의 요소로 들어가서 제 역할을 할 수 있습니다.

 

 

3. 배열 인덱싱(Array Indexing) : 배열(array) 인덱스 값 불러보기 

 

 이 부분에서는 맨 앞에 숫자가 0번부터 시작된다는 점을 꼭 !!!!!!!!!!!!!! 유의하셔야 한다는거 잊지마셔야 합니다. 그러면 위의 A 배열을 토대로 인덱싱 연습을 해보겠습니다. 인덱스는 뒤죽박죽으로 해보았고, 한번 보시면서 연습하거나 따라서 밑에 샘플 코드를 복사 붙여넣기 하셔서 이것저것 연습 해보시면 좋을겁니다. 특히나 이 인덱싱의 경우 대괄호[], 소괄호() 순서나 사소한 코드 실수들이 있을 수 있으니 꼭 직접 이것저것 수정해보고 손으로 직접 쳐보는게 좋겠다고 추천드립니다. 모르겠다면 구글링 해보는 것도 한 방법이겠습니다 :)  

 

실행 코드 공유 

#넘파이 순서는 인덱스 번호 0번 부터 시작된다는 것을 잊지 마세요
A = np.array(['재석', '형돈', '홍철', '준하', '하하', '명수', '길', '태호'])

print(A[3])
print(A[1])
print(A[7])
print(A[0])

 인덱싱을 할 때 [0]번부터 순서대로 우리의 첫번째 값인 '재석' 이 출력되고 그 다음 두번째인 '형돈' 이 인덱스 번호 [1]번으로 출력되는 것을 확인할 수 있습니다.

 

 

4. 배열 거꾸로 인덱싱(Array Indexing) : 배열 인덱스를 - 값으로 불러와보기

 

 이번에는 우리가 항상 불러오는 정방향 대로 말고, 음의 정수인 -가 붙은 값으로 불러내본다면 어떻게 될까요? 그럴 경우에는 우리가 인덱싱 되어있는 반대로! 출력 됩니다. 여기서 또 주의해야할 점은 왼쪽에서 시작했던 양의 정수 값에서는 1이 시작점이 아닌 0이 시작점이었죠? 그러나 -(마이너스) 값은 -1이 오른쪽 첫번째에서 시작된다는 점을 주목하셔야 합니다 !!  예시로 한번 확인해보시죠 !

 

사용코드 공유

A = np.array(['재석', '형돈', '홍철', '준하', '하하', '명수', '길', '태호'])

#넘파이 순서는 인덱스 번호 -(마이너스)는 -1 부터 시작한다는 점 !
print(A[-3])
print(A[-1])
print(A[-7])
print(A[0])

 

실행 코드

 -3은 오른쪽에서 세번째 값에 있던 '명수' 가 출력되고, -1은 오른쪽에서 가장 첫번째 값에 있는 '태호'가 출력됩니다. 역시 왼쪽에서 순서대로 하던 때에는 0으로 시작했는데, 오른 쪽에서는 -1부터 출발하는 것을 확인할 수 있습니다. 즉, 0은 인덱스 번호의 가장 앞쪽 값으로 고정되어있다는 점 인지 하시면 됩니다.

 

 

 

5. 배열 자르기(slicing) : 구역을 정해서 배열 슬라이싱 해보기

 

 우리가 정해놓은 배열을 항상 쓸 순 없기 때문에 이것을 어디서부터 어디까지 잘라낼 순 없을까요? 아니면 어떤 값과 어떤 값만 빼서 출력할 순 없을까요? 이것이 이제 인덱스 슬라이싱을 하는 이유 입니다.

방법은 간단합니다

연속적으로 자르려면 [ 시작(포함) 인덱스 : 끝(미포함) 인덱스]

부분 부분 자르려면 대괄호 두번!! [[ 인덱스 번호1, 인덱스 번호2, 인덱스 번호3]]

이렇게 출력하면 됩니다. 특히 연속적으로 자르는 경우 끝인덱스가 미포함 된다는 점을 확인하고 넘파이 슬라이싱 해보시면 좋을 것 같습니다. 또한, 넘파이를 부분 슬라이싱 하는 경우에는 [[  ]] 대괄호를 두번 써주어 감싸주는 것을 잊지 않으셨으면 좋겠습니다.

사용 코드 공유

A = np.array(['재석', '형돈', '홍철', '준하', '하하', '명수', '길', '태호'])

#슬라이싱(slicing)
A[[0,-1]]

A[[3,4]]

# 시작부분 부터 끝부분(미포함)까지
A[0:3]

실행 코드

 

이렇게 인덱스 슬라이싱 코드를 작성할 수 있었습니다. 여기서 끝이 아니라 새로운 넘파이 배열(어레이) 에 이 값을 지정해주어 새로운 넘파이를 출력하는 것이 또 가능합니다. 

 

이렇게 새로운 넘파이 어레이에 저장해주어 출력까지도 해봤습니다. 즉, 하나의 numpy 에서 슬라이싱(자르기) 를 통해 또 다른 작은 세부 array까지 지정해주는 것이 가능합니다. 

 

 

 

저의 아주 작은 티끌 코딩 글이 블로그 방문자 님의 코딩에 조금이라도,

도움이 됐으면 좋겠습니다.  감사합니다 : )

반응형