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 문서