Python/Numpy

[Numpy] 파이썬 넘파이 배열 원소 삭제 : np.delete 사용법

jimmy_AI 2022. 7. 17. 16:35
반응형

Python numpy delete 함수 사용 방법 예제

파이썬의 넘파이 모듈에서 배열의 원하는 위치와 축 방향을 지정하여 원소를 삭제할 수 있는

np.delete 함수의 사용법을 정리해보도록 하겠습니다.

(참고로 이 글은 넘파이의 해당 함수 공식 문서 내용을 기반으로 작성되었습니다.) 

 

기본적으로 delete 함수의 인자는 np.delete(배열, 인덱스, 축) 형태로 구성됩니다.

 

아래와 같은 2차원 배열 arr를 가정하여 값 제거를 진행해보도록 하겠습니다.

import numpy as np

arr = np.array([[1, 3, 5],
                [2, 4, 6],
                [3, 5, 7]])

 

 

np.delete axis별 값 제거 예시

먼저, axis = 0 방향으로 1번 인덱스(두 번째) 위치의 값들을 삭제한 예시는 다음과 같습니다.

np.delete(arr, 1, axis = 0)

# 결과
array([[1, 3, 5],
       [3, 5, 7]])

두 번째 행 위치의 원소들이 삭제된 모습을 살펴볼 수 있었습니다.

 

이번에는 axis = 1 방향으로 2번 인덱스(세 번째) 위치의 값들을 제거한 예시를 살펴보겠습니다.

np.delete(arr, 2, axis = 1)

# 결과
array([[1, 3],
       [2, 4],
       [3, 5]])

세 번째 열 위치의 원소들이 제거된 모습을 확인할 수 있었습니다.

 

반응형

 

인덱스 여러 개 지정하여 삭제 예시

만일, 인덱스 여러 개를 동시에 지정하여 한 번에 제거를 하고싶은 경우에는

delete 함수 인덱스 인자 위치(두 번째 인자)에 원하는 인덱스 값 리스트를 넣어주시면 됩니다.

 

axis = 0 방향으로 0번과 2번 인덱스 값들을 동시에 삭제한 예시는 다음과 같습니다.

np.delete(arr, [0, 2], axis = 0)

# 결과
array([[2, 4, 6]])

 

만일, 슬라이싱 형태의 인덱스를 반영하고 싶다면 다음과 같이 

np.s_[슬라이싱] 형태로 넣어주셔야 SyntaxError를 방지할 수 있습니다.

np.delete(arr, np.s_[:2], axis = 0)

# 결과
array([[3, 5, 7]])

 

 

axis = None으로 지정한 경우

만일, np.delete 함수의 axis 인자를 None으로 지정한다면

전체 원소들을 축 방향 순서대로 편 뒤 인덱스 번호에 해당하는 개별 값들을 제거한 결과

반환하게 됩니다.

np.delete(arr, [0, 4, 5], axis = None)

# 결과
array([3, 5, 2, 3, 5, 7])

예시로 0, 4, 5번 인덱스를 axis = None 설정으로 삭제한 결과는 위와 같았습니다.