HOWTO · NumPy
NumPy에서 행 삭제
numpy.delete() 함수를 사용하여 Python의 다차원 NumPy 배열에서 행을 삭제할 수 있습니다.
이 페이지의 내용
NumPy 배열은 크기를 제자리에서 바꾸며 행을 제거하는 기능을 제공하지 않습니다. 선택한 행이 빠진 배열을 만들려면 행 축과 함께 numpy.delete()를 사용하거나, 조건을 만족하는 행을 Boolean 마스크로 선택하면 됩니다. 배열 인덱스는 0부터 시작하므로 인덱스 1은 두 번째 행을 뜻합니다.
인덱스로 numpy.delete()를 사용해 행 하나 삭제하기
배열, 행 인덱스, axis=0을 numpy.delete()에 전달합니다. 축 0은 행을 선택하고, 2차원 배열에서 축 1은 열을 선택합니다. 다음 예제에서는 두 번째 행을 삭제합니다:
이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.
import numpy as np
array = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
without_second = np.delete(array, 1, axis=0)
print(without_second)
반환된 배열에는 첫 번째 행과 세 번째 행이 들어 있습니다. numpy.delete()는 새 배열을 만들며 array는 변경하지 않습니다. 이후 계산에서 반환값을 사용하세요. 위 예제처럼 새 변수에 할당하면 원래 배열도 계속 사용할 수 있습니다.
인덱스로 여러 행 삭제하기
한 번의 호출로 알고 있는 행 여러 개를 삭제하려면 인덱스들을 시퀀스로 전달합니다. 인덱스는 여전히 원래 배열을 기준으로 하므로, 같은 호출에서 인덱스 1을 삭제해도 인덱스 3의 의미는 달라지지 않습니다. 여기서는 두 번째 행과 네 번째 행을 삭제 대상으로 지정합니다:
이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.
import numpy as np
array = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]])
without_selected = np.delete(array, [1, 3], axis=0)
print(without_selected)
남은 행은 원래 배열의 인덱스 0과 2에 있던 행입니다. 삭제할 행을 데이터 값으로 정한다면 인덱스를 먼저 모으는 것보다 Boolean 마스크를 사용하는 편이 더 명확할 수 있습니다.
조건에 맞는 행 삭제하기
Boolean 마스크로 남길 행을 선택할 수 있습니다. 2차원 배열에서 array[:, 0]은 첫 번째 열을 선택하며, 여기에 5와 비교 연산을 적용하면 각 행마다 Boolean 값 하나가 만들어집니다. 다음 예제는 첫 번째 열의 값이 5보다 큰 행을 남깁니다:
이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.
import numpy as np
array = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]])
keep = array[:, 0] > 5
filtered = array[keep]
print(filtered)
이 방법은 numpy.delete()로 행을 삭제하는 대신, 조건에 맞는 행을 남기는 필터링입니다. 조건을 만족하는 행을 제거하려면 ~로 마스크를 반전해 array[~keep]처럼 사용하세요. 자신의 데이터에서 사용할 열과 규칙에 맞게 비교식을 선택하면 됩니다.
축, 인덱스, 반환된 배열 이해하기
2차원 배열에서 axis=0은 행을, axis=1은 열을 뜻합니다. numpy.delete(array, index, axis=0)에서 index는 행 축을 기준으로 한 0부터 시작하는 위치입니다. 0은 첫 번째 행, 1은 두 번째 행이며 이후에도 같은 방식으로 이어집니다. axis를 생략하면 삭제 전에 배열이 평탄화되므로 2차원 배열에서 행 전체를 제거하는 동작이 되지 않습니다.
이 연산은 입력 배열의 크기를 바꾸는 대신 새 배열을 반환합니다. 결과를 변수에 할당하거나 다음 식에서 직접 사용하세요. 선택한 축의 범위를 벗어난 인덱스는 유효하지 않으며 NumPy는 IndexError를 발생시킵니다. 조건으로 어떤 행이 선택되는지 확실하지 않다면, 더 큰 계산에 결과를 사용하기 전에 Boolean 마스크를 확인하거나 선택된 행을 출력해 보세요.