목차
Numpy Unique 란?
앞서 포스트에서 Numpy를 사용하면 시간을 절얄하고 왜 효율적인지에 대해 설명하였습니다.
이번장에서는 Numpy로 사용할 수 있는 효율적인 함수에 대해 알아보겠습니다.
- Unique()
Numpy Unique 는 Numpy 배열의 값을 검색해서 동일 값을 정리해거나, 정렬, 개수 확인 등을 해줍니다. Sytax는 아래와 같습니다.
numpy.unique(배열값, return_index=False, return_inverse=False, return_counts=False, axis=None)
내부에 option 값은 아래 예제를 통해 쉽게 이해하도록 하겠습니다.
리스트(list) 안의 정렬하고 동일 값(Same value, element) 구하기
- return_index
넘파이 배열 안의 값을 정렬하고 동일한 값은 삭제하고 하나만 남기고 고유 값이 처음으로 나온 Index 번호를 알려주는 Option은 return_index 입니다. 아래 예제를 통해 확인해보겠습니다.
예제 코드>>
import numpy as np
import random
a_list = []
for _ in range(10):
a_list.append(random.randint(1,20))
print(a_list)
unique_array=np.unique(a_list,return_index=True)
print(unique_array)
4~6번 라인: a_list에 1~20까지의 정수 중를 랜덤으로 만들어서 10개를 넣었습니다.
8번 라인: a_list 값 확인
9번 라인: return_index 를 True로 설정했습니다.
결과>>
[11, 15, 16, 16, 11, 6, 3, 16, 6, 13]
(array([ 3, 6, 11, 13, 15, 16]), array([6, 5, 0, 9, 1, 2], dtype=int64))
결과에서 array([ 3, 6, 11, 13, 15, 16]) 는 a_list 중에 고유 값 만으로 만든 Numpy list 이고 자동으로 정렬 되었음을 알 수 있습니다.
그리고 array([6, 5, 0, 9, 1, 2] 는 각 값들이 발생한 index 값입니다. 예를 들어 3은 6이므로 a_list[6] 에서 처음 나왔다는 뜻입니다.
리스트(list) 안의 정렬하고 동일 값(Same value, element) 개수 구하기
- return_counts
Numpy 배열의 값을 정렬하고 동일 값은 하나만 남기고 고유값의 갯수를 구하는 옵션이 return_counts 입니다. 아래 예제를 통해 확인해 보겠습니다.
import numpy as np
import random
a_list = []
for _ in range(10):
a_list.append(random.randint(1,20))
print(a_list)
unique_array=np.unique(a_list,return_counts=True)
print(unique_array)
4~6번 라인: a_list에 1~20까지의 정수 중를 랜덤으로 만들어서 10개를 넣었습니다.
8번 라인: a_list 값 확인
9번 라인: return_counts 를 True로 설정했습니다.
결과>>
[9, 3, 13, 10, 13, 12, 12, 7, 6, 2]
(array([ 2, 3, 6, 7, 9, 10, 12, 13]), array([1, 1, 1, 1, 1, 1, 2, 2], dtype=int64))
결과에서 a_list에서 12와 13만 총 2번 발생했습니다. 나머지는 한번씩만 발생했습니다.
출력값에서 각 고유 값의 개수를 확인할 수 있습니다.
그외 옵션 : return_inverse, axis
return_inverse 는 역으로 값을 찾아 갑니다.
코드>>
import numpy as np
import random
a_list = []
for _ in range(10):
a_list.append(random.randint(1,10))
print(a_list)
unique_array=np.unique(a_list,return_inverse=True)
print(unique_array)
결과>>
[3, 6, 7, 3, 10, 9, 6, 4, 7, 2]
(array([ 2, 3, 4, 6, 7, 9, 10]), array([1, 3, 4, 1, 6, 5, 3, 2, 4, 0], dtype=int64))
결과에서 a_list[1] = 3, a_list[3] = 6 이다. 이처럼 a_list에 연계해서 값을 알려 줍니다.
axis는 위 와같이 1차 배열일 경우 aixs=0 으로 진행한 것이지만 배열이 여러개 일 경우 aixs를 사용해서 원하는 위치의 배열을 정할 수 있습니다.
Numpy 배열 값 list로 출력하기
참고로 numpy list 출력 값에서 list만 가져오고 싶을 경우 출력 값에 [0]과 같이 원하는 list의 위치를 불러 주시면 됩니다.
예제 코드>>
import numpy as np
import random
a_list = []
for _ in range(10):
a_list.append(random.randint(1,10))
print(a_list)
unique_array=np.unique(a_list,return_inverse=True)
print(unique_array[0])
11번 라인 [0]을 사용해서 첫번째 리스트 값을 출력 합니다.
결과>>
[8, 10, 9, 7, 8, 4, 3, 7, 10, 6]
[ 3 4 6 7 8 9 10]
'파이썬(Python) > numpy' 카테고리의 다른 글
[Python]날짜 더하기 빼기(Numpy, Datetime) (0) | 2022.01.11 |
---|---|
[Python]Numpy에서 dtype이란? (데이터 종류, Type) (0) | 2022.01.11 |
[Python]리스트와 Numpy 배열 슬라이싱 방법 (List, slicing, 나누기) (0) | 2022.01.10 |
[Python]큰 용량(사이즈) 데이터 셋 처리 방법과 처리 시간 비교 (0) | 2022.01.07 |
[Python] Numpy와 list 차이 (정의, 사용법, 예제코드) (0) | 2021.10.20 |