상위 목록: 하위 목록: 작성 날짜: 읽는 데 12 분 소요

이어 붙이기(Append)

import numpy as np

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


item = np.array([
    [5, 5],
    [6, 6]
])

print(arr.shape)
print(item.shape)

append = np.append(arr, item.reshape(1, 2, 2), axis=0)

print(append)
결과
(2, 2, 2)
(2, 2)
[[[1 1]
  [2 2]]

 [[3 3]
  [4 4]]

 [[5 5]
  [6 6]]]

이어 붙이기 함수(np.append)내장 이어 붙이기 함수(append)와 다르게 차원이 같아야 붙일 수 있습니다.

만약, Numpy 배열이 아닌 List 배열이라면 내장 이어 붙이기 함수를 통해 큰 문제 없이 이어 붙일 수 있습니다.

그 이유는 ListContainer 형식의 단순 값을 저장하는 자료형이기 때문입니다.

Numpy 배열은 연산을 위한 라이브러리입니다.

arr 변수의 차원 형태는 (2, 2, 2)를 가지며, item 변수는 (2, 2)를 갖습니다.

이 값을 이어 붙일 때, 앞 부분(2, 2, 2)에 붙여야하는지, 뒷 부분(2, 2, 2)에 붙여야하는지 알 수 없습니다.

그러므로, item 배열의 차원 크기를 arr 배열의 차원 크기와 동일하게 구성한다음 명시적으로 어떤 축(axis)에 연결할지 설정합니다.

이어 붙이기 함수는 결과 = np.append(배열1, 배열2, 축)을 통해 배열을 이어 붙일 수 있습니다.

위의 예제는 뒷 부분에 연결하는 예시입니다.

만약, 앞 부분에 연결한다면, 차원 형태를 (2, 2, 1)로 설정하고 마지막 축(axis=2)에 연결해 사용할 수 있습니다.


append = np.append(arr, item.reshape(2, 2, 1), axis=-1)

print(append)
결과
[[[1 1 5]
  [2 2 5]]

 [[3 3 6]
  [4 4 6]]]



빈 배열에서 이어 붙이기

import numpy as np

arr = np.empty((1, 2), dtype=int)

for i in range(5):
    item = np.array([[i, i]])
    arr = np.append(arr, item, axis=0) 

arr = np.delete(arr, [0, 0], axis=0)
print(arr)
결과
[[0 0]
 [1 1]
 [2 2]
 [3 3]
 [4 4]]

List 자료형에서는 L = []로 선언 후 내장 이어 붙이기 함수(append)를 활용해 자유롭게 배열의 형태를 생성하곤 했습니다.

하지만, Numpy 배열에서는 앞서 설명한 이유처럼 어떤 형태로 이어 붙이기를 실행할지 알 수 없습니다.

그러므로, 이어 붙일 배열의 형태를 미리 선언(np.empty)합니다.

반복문을 통해 이어 붙이기가 완료되면, 첫 번째 행과 열에 있는 더미 값을 제거해야 합니다.

제거 함수(np.delete)를 통해 특정 요소값을 삭제합니다.

결과 = np.delete(배열, [시작, 끝], 축)을 통해 배열을 제거할 수 있습니다.

제거 함수는 [시작, 끝] 값에 따라 제거할 대상을 설정합니다.

시작 축 부터 끝 축까지 제거합니다.

예시에서는 첫 번째 축(axis=0)을 대상으로 [0 ~ 0]을 삭제하므로 첫 번째 행이 제거됩니다.

즉, 더미 값인 np.empty 값이 제거되고 이어 붙인 값만 남게됩니다.

댓글 남기기