본문 바로가기
Python/Python FAQ

Python NumPy 배열에 추가 열을 어떻게 추가하나요?, How do I add an extra column to a NumPy array?

by 베타코드 2023. 12. 4.
반응형

질문


다음과 같은 2D 배열이 주어졌습니다:

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

두 번째 축에 0으로 이루어진 열을 추가하고 싶습니다:

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

답변


np.r_[...] (문서)와 np.c_[...] (문서)는 np.vstacknp.hstack에 대한 유용한 대안입니다. 주의할 점은 괄호 () 대신에 대괄호 []를 사용한다는 것입니다.

일부 예제:

: import numpy as np
: N = 3
: A = np.eye(N)

: np.c_[ A, np.ones(N) ]              # 열 추가
array([[ 1.,  0.,  0.,  1.],
       [ 0.,  1.,  0.,  1.],
       [ 0.,  0.,  1.,  1.]])

: np.c_[ np.ones(N), A, np.ones(N) ]  # 또는 두 개
array([[ 1.,  1.,  0.,  0.,  1.],
       [ 1.,  0.,  1.,  0.,  1.],
       [ 1.,  0.,  0.,  1.,  1.]])

: np.r_[ A, [A[1]] ]              # 행 추가
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.],
       [ 0.,  1.,  0.]])
: # np.r_[ A, A[1] ]은 아님

: np.r_[ A[0], 1, 2, 3, A[1] ]    # 벡터와 스칼라 혼합
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

: np.r_[ A[0], [1, 2, 3], A[1] ]  # 리스트
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

: np.r_[ A[0], (1, 2, 3), A[1] ]  # 튜플
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

: np.r_[ A[0], 1:4, A[1] ]        # 동일, 1:4 == arange(1,4) == 1,2,3
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

대괄호 []를 사용하는 이유는 파이썬에서 1:4를 대괄호 안의 슬라이스 객체로 변환하기 때문입니다.

반응형

댓글