반응형
질문
다음과 같은 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.vstack
와 np.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
를 대괄호 안의 슬라이스 객체로 변환하기 때문입니다.
반응형
댓글