웹사이트 검색

Python의 numpy.append()


Python numpy append() 함수는 두 배열을 병합하는 데 사용됩니다. 이 함수는 새 배열을 반환하고 원래 배열은 변경되지 않은 상태로 유지됩니다.

NumPy append() 구문

함수 구문은 다음과 같습니다.

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

  • arr은 배열과 같은 객체이거나 NumPy 배열일 수 있습니다. 값은 이 배열의 복사본에 추가됩니다.
  • 값은 배열과 같은 객체이며 \arr 요소의 끝에 추가됩니다.
  • 축은 값이 추가되는 축을 지정합니다. 축이 제공되지 않으면 두 배열이 모두 평면화됩니다.

파이썬 numpy.append() 예제

NumPy append() 함수의 몇 가지 예를 살펴보겠습니다.

1. 두 어레이 병합

import numpy as np

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[10, 20], [30, 40]])

# no axis provided, array elements will be flattened
arr_flat = np.append(arr1, arr2)

print(arr_flat)  # [ 1  2  3  4 10 20 30 40]

2. 축을 따라 병합

import numpy as np

arr_merged = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=0)
print(f'Merged 2x2 Arrays along Axis-0:\n{arr_merged}')

arr_merged = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=1)
print(f'Merged 2x2 Arrays along Axis-1:\n{arr_merged}')

산출:

Merged 2x2 Arrays along Axis-0:
[[ 1  2]
 [ 3  4]
 [10 20]
 [30 40]]
Merged 2x2 Arrays along Axis-1:
[[ 1  2 10 20]
 [ 3  4 30 40]]

  • 2x2 배열이 x축을 따라 병합되면 출력 배열 크기는 4x2입니다.
  • 2x2 배열이 y축을 따라 병합되면 출력 배열 크기는 2x4입니다.

3. 다른 모양의 배열 병합

축을 제외한 두 배열의 모양이 다른 경우 append() 함수는 ValueError를 발생시킵니다. 간단한 예를 들어 이 시나리오를 이해해 봅시다.

arr3 = np.append([[1, 2]], [[1, 2, 3], [1, 2, 3]])
print(arr3)

arr3 = np.append([[1, 2]], [[1, 2], [3, 4]], axis=0)
print(arr3)

  • 첫 번째 예에서는 배열 요소가 평면화됩니다. 따라서 크기가 완전히 다른 경우(1x2 및 2x3)에도 append()가 제대로 작동합니다.
  • 두 번째 예에서 배열 모양은 1x2 및 2x2입니다. 0축을 따라 추가하므로 0축 모양이 다를 수 있습니다. 다른 도형은 동일해야 하므로 이 append()도 잘 작동합니다.

산출:

[1 2 1 2 3 1 2 3]

[[1 2]
 [1 2]
 [3 4]]

ValueError가 발생하는 또 다른 예를 살펴보겠습니다.

>>> import numpy as np
>>> 
>>> arr3 = np.append([[1, 2]], [[1, 2, 3]], axis=0)
Traceback (most recent call last):
  File "", line 1, in 
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/numpy/lib/function_base.py", line 4528, in append
    return concatenate((arr, values), axis=axis)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
>>> 

배열 모양은 1x2 및 2x3입니다. 1축 모양이 다르기 때문에 ValueError가 발생합니다. 참조: API 문서