Python/Numpy

[Numpy] 넘파이 배열 행/열 추가 방법 정리(끝 위치, 중간 위치)

jimmy_AI 2022. 12. 13. 14:29
반응형

파이썬 numpy array row/column 삽입 방법

파이썬에서 넘파이 배열의 끝 위치 혹은 중간의 특정 위치에

원하는 값들의 행 및 열을 추가하는 방법들을 정리해보도록 하겠습니다.

 

우선, 아래와 같은 2차원 배열 arr를 가정하고 행 및 열을 다양하게 추가해 보겠습니다.

import numpy as np

arr = np.arange(12).reshape(4, 3)

arr
# 출력 결과
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])

 

 

1. 끝 위치 행/열 추가 : np.r_, np.c_

np.r_[기존 배열, 행 방향으로 추가할 배열] 형태로는 행 추가를,

np.c_[기존 배열, 열 방향으로 추가할 배열] 형태로는 열 추가를 진행할 수 있습니다.

 

주의할 점은, 2차원 배열의 경우 [100, 200, 300] 형태가 아니라

[[100, 200, 300]] 형태처럼 shape를 맞추어 추가할 배열을 지정해주어야 한다는 점입니다.

 

해당 메소드들을 활용하여 행 및 열을 끝 위치에 추가한 예시는 다음과 같습니다.

# 행 추가 예시
new_row = [[100, 200, 300]]

np.r_[arr, new_row]
# 출력 결과
array([[  0,   1,   2],
       [  3,   4,   5],
       [  6,   7,   8],
       [  9,  10,  11],
       [100, 200, 300]])

# 열 추가 예시
new_col = [[100], [200], [300], [400]]

np.c_[arr, new_col]
# 출력 결과
array([[  0,   1,   2, 100],
       [  3,   4,   5, 200],
       [  6,   7,   8, 300],
       [  9,  10,  11, 400]])

 

반응형

 

2. 끝 위치 행/열 추가 : np.append

np.append 메소드를 활용해서도 끝 위치에 행 및 열 추가가 비슷한 원리로 가능합니다.

해당 방법에 관해서는 관련 내용을 다룬 아래 링크의 포스팅을 참고해주세요.

 

[Numpy] np.append 사용법 : 배열끼리 이어 붙인 결과 반환

파이썬 넘파이 append 함수 사용 예제 Numpy 라이브러리에서 배열들을 이어 붙인 결과를 손쉽게 얻어낼 수 있는 append 함수의 사용법에 대해서 경우의 수를 중심으로 이해해보도록 하겠습니다. Numpy

jimmy-ai.tistory.com

 

 

3. 중간 위치 행/열 추가 : np.insert

끝 위치를 포함한 중간의 특정 위치에 원하는 행/열을 삽입하기 위해서는

np.insert 메소드를 활용해주시면 됩니다.

 

사용법은 np.insert(기존 배열, 추가할 위치 인덱스, 추가할 배열, axis 방향)으로

각각을 지정해주시면 됩니다.

 

여기서는 추가할 배열의 shape를 맞출 필요는 없으며, 개수만 일치하면 무관합니다.

 

np.insert를 활용하여 특정 위치에 행/열을 추가한 예시는 다음과 같습니다.

# 행 삽입 예시
new_row = [100, 200, 300]

np.insert(arr, 1, new_row, axis = 0) # 1번 위치, 행방향
# 출력 결과
array([[  0,   1,   2],
       [100, 200, 300],
       [  3,   4,   5],
       [  6,   7,   8],
       [  9,  10,  11]])

# 열 삽입 예시
new_col = [100, 200, 300, 400]

np.insert(arr, 2, new_col, axis = 1) # 2번 위치, 열방향
# 출력 결과
array([[  0,   1, 100,   2],
       [  3,   4, 200,   5],
       [  6,   7, 300,   8],
       [  9,  10, 400,  11]])