본문 바로가기
  • Hello_
Python/Numpy

[Python] np.unique() - 중복된 값들 중 고유한 값들만 반환하기

by LDwDL 2022. 9. 21.
728x90
반응형

오늘은 어레이에서 중복된 인자들을 없애고 고유한 인자들만 반환하는 법에 대해 포스팅하겠다. 또한 고유한 인자들의 인덱스 반환법과 고유한 인자들이 각각이 몇개가 있는지에 대해서도 작성하겠다.

 

np.unique() 

np.unique()의 입력값의 인자들이 숫자 형태이든 문자열 형태이든 중복된 값들은 하나로 만들어준다.

 

[숫자 형태 어레이]

import numpy as np

nums = [3,6,9,3,6,9,3,6,9]
np.unique(nums)
# array([3, 6, 9])

숫자로 이뤄진 리스트의 경우이다.

 

[문자열 형태 어레이]

strs = ['num_1','num_2','num_3','num_1','num_2','num_3','num_1','num_2','num_3']
np.unique(strs)
# array(['num_1', 'num_2', 'num_3'], dtype='<U5')

문자열로 이뤄진 리스트의 경우는 다음과 같다.

 

np.unique() 고유값 인덱스 반환법

np.unique()에는 2가지 파라미터를 받을 수가 있는데, 그 중 하나가 return_inverse이다. 이를 True로 변경해주면 np.unique()로 부터 출력된 고유값들의 인덱스가 입력된 리스트에 매칭이 된다. 

 

[숫자 형태 어레이]

nums = [3,6,9,3,6,9,3,6,9]
np.unique(nums,return_inverse=True)

"""
(array([3, 6, 9]),
 array([0, 1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))
"""

 

[문자열 형태 어레이]

strs = ['num_1','num_2','num_3','num_1','num_2','num_3','num_1','num_2','num_3']
np.unique(strs,return_inverse=True)

"""
(array(['num_1', 'num_2', 'num_3'], dtype='<U5'),
 array([0, 1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))
"""

 

np.unique() 입력된 리스트 내에 고유값의 개수

np.unique()에는 파라미터내에는 return_count도 있다. 이를 True로 변경해주면 np.unique()에서 출력된 고유값이 입력된 리스트내에 각각 몇개가 존재하는지 출력해 줄 수 있다.

 

[숫자 형태 어레이]

nums = [3,6,9,3,6,9,3,6,9]
np.unique(nums,return_counts=True)
# (array([3, 6, 9]), array([3, 3, 3], dtype=int64))

 

[문자 형태 어레이]

strs = ['num_1','num_2','num_3','num_1','num_2','num_3','num_1','num_2','num_3']
np.unique(strs,return_counts=True)
# (array(['num_1', 'num_2', 'num_3'], dtype='<U5'), array([3, 3, 3], dtype=int64))

 

np.unique() 예외

리스트 형태의 어레이는 위 경우와 다르다.

 

[같은 크기의 리스트 형태 어레이]

lists = [[1,2,3],[3,6,9],[4,5,6],[7,8,10]]
np.unique(lists)
# array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

리스트 내부의 인자들을 모두 고려하여 np.unique()를 취해준다.같은 크기의 리스트 형태인 경우에서 다음과 같이 출력된다.

 

[다른 크기의 리스트 형태 어레이]

lists = [[1,2,3,4,5],[3,6,9],[5,6],[3,6,9],[7,8,10]]
np.unique(lists)
 # array([list([1, 2, 3, 4, 5]), list([3, 6, 9]), list([5, 6]), list([7, 8, 10])], dtype=object)

다른 크기의 리스트가 포함되어 있을 때 우리가 원하는 바와 같이 중복된 리스트는 하나로 출력하되며 고유 리스트만 출력이 된다.

 

 

 

728x90
반응형

댓글