본문 바로가기

COMPUTER SCIENCE/Python

[NumPy] 1차원 배열 데이터 조작

NumPy 미리 보기

 

NumPy _ 파이썬의 배열

리스트 상위 호환 NumPy 파이썬의 오픈 라이브러리 넘 파이는 리스트 데이터 타입을 반복적으로 계산하는 것보다 훨씬 효율적인 데이터 처리를 보여준다. 따라서 넘 파이를 사용할 줄 아는 것은

hooks.tistory.com

0. INTRO

1차원 배열 데이터를 조작하는데 기본적으로 사용되는 코드를 슬라이싱(Slicing)이라고 한다. 슬라이싱 방법을 기반으로 배열 데이터를 조작해보자.

1. 슬라이싱 코드

슬라이싱 코드를 가장 쉽게 사용하는 방법은 정수 형태의 범위를 지정해주는 것이다. 다음의 예시 코드를 보자.

 

예시 코드:

L=np.arange(10)

 

코드 결과

 

L 변수에 저장된 array 데이터를 조각 내버렸다. 결과를 보면 알겠지만, 인덱스를 기준 순서로 하여 데이터를 조각낸다. 이 슬라이싱 방법은 인덱스 순서를 일정 단계(step)를 가지는 순서로 조각낼 수 도 있다. 다음의 예시 코드를 참고하자.

 

예시 코드:

 

S=L[:5:2] 

 

이번에는 시작 인덱스를 지정하지 않았는데, 이는 인덱스 0을 의미한다. 예시 코드의 결과를 보기 전에, 인덱스 순서를 거꾸로 하는 법도 알고 넘어가자. 단계(Step)에 음수 -1을 넣으면 배열의 순서를 반대로 뒤집어서 슬라이싱 하게 된다. 다음의 추가 예시 코드를 참고하자.

 

추가 예시 코드:

 

S2=L[::-1]

 

코드 결과

2.  배열 차원 분리 _ reshape

지금까지 1차원 배열에 대해 언급했다면, 1차원 배열을 2차원 배열로 만들어주는 방법을 짚고 넘어가 보자. 먼저, 다음의 예시 코드를 참고하자.

 

예시 코드:

R=L.reshape(2,5)

 

코드 결과

 

놀랍게도 배열이 2개로 분리되었다. 분리된 배열의 첫 번째 원소가 1차원 배열 [0,1,2,3,4]이고 두 번째 원소 역시 1차원 배열 [5,6,7,8,9]가 되는 것이다. 즉, reshape 코드의 첫 번째 숫자 2는 배열을 2개로 분리한다는 것을 의미하고, 두 번째 숫자 5는 분리된 배열이 가지는 원소 개수를 의미하게 된다. 주의할 점은 차원을 분리할 기존 배열의 원소 개수와 분리된 원소의 개수 총합이 정확히 맞아야 한다는 것이다. 

3.  배열 차원 통합 _ ravel() or flatten()

reshape 코드와 반대의 개념을 ravel() 혹은 flatten() 함수가 제공한다. 다음의 예시 코드로 분리된 배열들이 어떻게 합쳐지는지 이해하도록 하자.

 

예시 코드:

L2=S.ravel()
L3=S.flatten()

 

코드 결과