본문 바로가기
Python Library/NumPy

[NumPy] numpy 원소 제거 및 추가

by goatlab 2021. 12. 29.
728x90
반응형
SMALL

np.insert(arr, obj, values, axis=None)

 

값을 추가하는 함수이다.

 

a = np.array([[1, 1], [2, 2], [3, 3]])
# array([[1, 1],
         [2, 2],
         [3, 3]])

np.insert(a, 1, 5)
# array([1, 5, 1, 2, 2, 3, 3])

np.insert(a, 1, 5, axis=0)
# array([[1, 1],
         [5, 5],
         [2, 2],
         [3, 3]])

np.insert(a, 1, 5, axis=1)
# array([[1, 5, 1],
         [2, 5, 2],
         [3, 5, 3]])

 

np.append(arr, values, axis=None)

 

insert와 유사하게 배열을 삽입해주는 함수이다. insert 함수는 특정 인덱스에 원하는 배열을 삽입할 수 있다. 반면, append 함수는 항상 마지막 인덱스에 배열을 추가해 준다. 그래서 insert 함수와는 다르게 obj 인자가 없는 것을 볼 수 있다. 이때, append 함수의 큰 특징은 axis를 명시하면 values의 차원의 수와 arr의 차원의 수가 동일해야 한다. 예를 들어서 arr의 차원의 수는 3인데, values의 차원의 수가 2이면 오류가 발생하게 된다.

 

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

np.append(a, [10, 20, 30])
# array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 20, 30])

np.append(a, [[10, 20, 30]], axis=0)
# array([[ 1,  2,  3],
         [ 4,  5,  6],
         [ 7,  8,  9],
         [10, 20, 30]])

np.append(a, [[10], [20], [30]], axis=1)
# array([[ 1,  2,  3, 10],
         [ 4,  5,  6, 20],
         [ 7,  8,  9, 30]])

 

np.delete(arr, obj, axis=None)

 

요소를 삭제하는 함수이다. 그리고 arr은 삭제할 배열, obj는 몇 번째를 삭제할 것인지, axis는 어느 축에서 삭제할 것인지이다.

 

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

np.delete(arr, 1, 0)
# array([[ 1,  2,  3,  4],
         [ 9, 10, 11, 12]])

np.delete(arr, 1, 1)
# array([[ 1,  3,  4],
         [ 5,  7,  8],
         [ 9, 11, 12]])

 

np.trim_zeros(filt, trim='fb')

 

넘파이 배열의 앞부분, 뒷부분에 해당하는 0들을 제거해주는 함수이다. trim은 3가지 옵션이 존재한다. 'f'로 지정하면 front, 앞부분의 0만 제거하게 된다. 'b'로 지정하면 back, 뒷부분의 0만 제거하게 된다. 'fb'는 디폴트 값으로 지정하면 front, back, 앞, 뒤의 0을 모두 제거하게 된다. 반면, 넘파이 배열의 앞뒷부분이 아닌 중간에 다른 값들 사이에 섞여있는 0값은 제거되지 않는다.

 

a = np.array((0, 0, 0, 1, 2, 3, 0, 2, 1, 0, 0, 0))

np.trim_zeros(a, trim='f')
# array([1, 2, 3, 0, 2, 1, 0, 0, 0])

np.trim_zeros(a, trim='b')
# array([0, 0, 0, 1, 2, 3, 0, 2, 1])

np.trim_zeros(a, trim='fb')
# array([1, 2, 3, 0, 2, 1])

 

np.unique

 

이 함수는 여러 개의 값들이 존재하는 넘파이 배열에서 어떤 값으로 구성되어 있는지 알 수 있다. 최초로 등장하는 값의 인덱스(return_index), 입력 배열을 재구축할 수 있는 인덱스 배열 (return_inverse), 각 값이 넘파이 패열에서 등장하는 횟수 (return_counts)를 반환할 수 있다.

 

a = np.array([1, 2, 2, 3, 3, 3])
# array([1, 2, 2, 3, 3, 3])

np.unique(a)
# array([1, 2, 3])

np.unique(a, return_index=True)
# (array([1, 2, 3]), array([0, 1, 3]))

np.unique(a, return_index=True, return_inverse=True)
# (array([1, 2, 3]), array([0, 1, 3]), array([0, 1, 1, 2, 2, 2]))

np.unique(a, return_index=True, return_inverse=True, return_counts=True)
# (array([1, 2, 3]),
   array([0, 1, 3]),
   array([0, 1, 1, 2, 2, 2]),
   array([1, 2, 3]))
   
b = np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])
# array([[1, 0, 0],
         [1, 0, 0],
         [2, 3, 4]])

np.unique(b, axis=0)
# array([[1, 0, 0],
         [2, 3, 4]])

np.unique(b, axis=1)
# array([[0, 0, 1],
         [0, 0, 1],
         [3, 4, 2]])

 

 

728x90
반응형
LIST

'Python Library > NumPy' 카테고리의 다른 글

[NumPy] numpy array 전체 출력  (0) 2021.12.31
[NumPy] numpy 원소 재배열  (0) 2021.12.30
[NumPy] asarray()  (0) 2021.12.27
[NumPy] numpy.ndarray  (0) 2021.12.27
넘파이 (NumPy)  (0) 2021.12.27