TUTORIAL

NumPy Tutorial-NumPy 배열 추가

이 섹션에서는 Numpy 배열에 데이터를 추가하는 방법을 소개합니다.

이 페이지의 내용

NumPy는 배열에 값을 추가하는 numpy.append를 제공합니다. 이는 ndarray.append 메서드가 아니라 함수이며, 입력 배열을 제자리에서 변경하는 대신 새 배열을 반환합니다. Python 리스트에도 이름이 비슷한 메서드가 있습니다. list.append는 객체 하나를 단일 항목으로 추가하고, list.extend는 반복 가능한 객체의 각 항목을 추가합니다. NumPy 함수는 배열의 모양과 축 규칙을 따르므로, 리스트 메서드는 유용한 비교 대상이지만 서로 바꿔 쓸 수는 없습니다.

numpy.append의 기능

numpy.append는 입력 배열과 추가할 값을 결합한 결과를 반환합니다. 기본적으로 두 입력을 먼저 평탄화하므로, 원래 배열이 여러 차원이더라도 결과는 1차원입니다. 축을 지정하면 나머지 차원을 유지한 채 해당 방향으로 결합합니다. 평평한 시퀀스가 필요하면 기본 동작을 사용하고, 행과 열의 배치가 중요하면 축을 지정하세요.

이 함수는 새 배열을 반환하므로 결합된 결과가 필요하다면 반환값을 저장해야 합니다. 예를 들어 새 변수에 할당하거나 기존 변수에 다시 할당할 수 있습니다. 반환값을 사용하지 않고 함수를 호출해도 arr은 갱신되지 않습니다.

구문과 매개변수

함수 시그니처는 numpy.append(arr, values, axis=None)입니다. NumPy를 np라는 이름으로 가져오면 보통 np.append로 호출합니다. arr은 확장할 배열형 입력입니다. values에는 추가할 데이터가 들어가며, 스칼라나 배열형 객체를 사용할 수 있습니다. axis는 결합할 차원을 지정합니다. 기본값인 None을 사용하면 결합 전에 두 입력을 모두 평탄화합니다. 함수는 배열을 반환합니다.

매개변수 의미
arr 입력 배열형 객체
values 추가할 스칼라 또는 배열형 값
axis 결합할 차원. 먼저 평탄화하려면 None을 지정합니다.

다음 예제를 실행해 보세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

import numpy as np

numbers = np.array([1, 2, 3])
combined = np.append(numbers, [4, 5])
print(combined)
[1 2 3 4 5]

축 없이 추가하기

axis를 생략하거나 None으로 지정하면 NumPy는 결합하기 전에 arr과 values를 평탄화합니다. 입력의 원래 차원과 관계없이 결과는 1차원입니다. 예를 들어 2차원 배열에 행 모양의 값을 결합해도 행과 열의 배치는 유지되지 않습니다. 이 동작은 평평한 시퀀스를 만들 때 편리하지만, 원래 배열의 배치에 행이나 열을 삽입하지는 않습니다.

배열의 차원을 유지해야 한다면 기본값에 의존하지 말고 축을 지정하세요. 평탄화하면 값들을 결합하기 전에 차원 정보가 사라지므로, 서로 모양이 다른 입력도 함께 사용할 수 있습니다.

축을 따라 추가하기

2차원 배열에서 axis=0은 행을 추가하고 axis=1은 열을 추가합니다. 입력 배열은 결합하는 차원을 제외한 모든 차원에서 크기가 같아야 합니다. 따라서 행을 추가하려면 기존 배열과 열 개수가 같아야 하고, 열을 추가하려면 행 개수가 같아야 합니다. 크기가 맞지 않으면 나머지 차원의 정렬을 유지한 채 배열을 결합할 수 없으므로 ValueError가 발생합니다.

다음 예제는 행을 추가합니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
with_row = np.append(matrix, [[5, 6]], axis=0)
print(with_row)
[[1 2]
 [3 4]
 [5 6]]

axis로 지정한 차원을 제외한 모든 차원의 크기가 같아야 합니다. 예를 들어 열이 세 개인 행을 열이 두 개인 행렬에 추가하면 호환되지 않으므로 ValueError가 발생합니다.

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
try:
    np.append(matrix, [[5, 6, 7]], axis=0)
except ValueError as error:
    print(type(error).__name__)

대신 열을 추가하려면 기존 행마다 한 행씩 있고 새 값 열이 하나 있는 2차원 배열을 전달하세요. 다음 예제를 실행해 보세요.

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
with_column = np.append(matrix, [[5], [6]], axis=1)
print(with_column)
[[1 2 5]
 [3 4 6]]

결과는 matrix와 같은 두 행을 가지며, 새 값은 세 번째 열에 들어갑니다. 추가할 입력의 행 개수가 맞지 않으면 다시 시도하기 전에 차원 크기를 확인하세요.