일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- reshape
- 파이썬
- Python
- concat
- 배열붙이기
- SQL문제
- 랜덤샘플링
- buit-in exception
- CONCATENATE
- 배열자르기
- 배열형태변경
- 배열추가
- ndarray
- Revising the Select Query I
- numpy
- 배열쪼개기
- Revising the Select Query II
- 해커랭크
- 파일저장하기
- fancyindexing
- 배열나누기
- 넘파이장점
- 배열분리하기
- 배열연산
- npy
- 표본추출
- 넘파이
- 논리배열
- 벡터연산
- SQL
- Today
- Total
기록하는 습관
[Numpy] 005. 배열 붙이기 (Concatenate) 본문
배열 붙이기 (Concatenate)
import numpy as np
np.concatenate()
Docstring:
concatenate((a1, a2, ...), axis=0, out=None, dtype=None, casting="same_kind")
Join a sequence of arrays along an existing axis.
가장 간단해 보이는 concat 함수이지만 차원과 shape을 신경써서 써야 한다.
a = np.array([1,2,3])
b = np.concatenate((a,a), axis=0)
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
[1 2 3]
shape : (3,) ndim : 1
[1 2 3 1 2 3]
shape : (6,) ndim : 1
a = np.array([[1,2]])
b = np.concatenate([a,a], axis=0)
c = np.concatenate((a,a), axis=1)
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
print( c )
print( "shape :", c.shape, "ndim :", c.ndim )
[[1 2]]
shape : (1, 2) ndim : 2
[[1 2]
[1 2]]
shape : (2, 2) ndim : 2
[[1 2 1 2]]
shape : (1, 4) ndim : 2
아래와 같이 1차원 벡터에 2차원 축으로 붙이려는 경우 에러가 발생
a = np.array([1,2,3])
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
b = np.concatenate((a,a), axis=1)
[1 2 3]
shape : (3,) ndim : 1
---------------------------------------------------------------------------
AxisError Traceback (most recent call last)
<ipython-input-5-a3ba8329f4a1> in <module>
2 print( a )
3 print( "shape :", a.shape, "ndim :", a.ndim )
----> 4 b = np.concatenate((a,a), axis=1)
<__array_function__ internals> in concatenate(*args, **kwargs)
AxisError: axis 1 is out of bounds for array of dimension 1
다음과 같이 2차원으로 임베딩이 필요하다.
a = np.array([[1,2,3]])
b = np.concatenate((a,a), axis=1)
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
[[1 2 3]]
shape : (1, 3) ndim : 2
[[1 2 3 1 2 3]]
shape : (1, 6) ndim : 2
concat 하려는 축 외의 차원 shape이 동일해야 작용한다.
a = np.array(range(12)).reshape(2,2,3)
b = np.array(range(6)).reshape(1,2,3)
c = np.concatenate((a,b), axis=0)
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
print( c )
print( "shape :", c.shape, "ndim :", c.ndim )
[[[ 0 1 2]
[ 3 4 5]]
[[ 6 7 8]
[ 9 10 11]]]
shape : (2, 2, 3) ndim : 3
[[[0 1 2]
[3 4 5]]]
shape : (1, 2, 3) ndim : 3
[[[ 0 1 2]
[ 3 4 5]]
[[ 6 7 8]
[ 9 10 11]]
[[ 0 1 2]
[ 3 4 5]]]
shape : (3, 2, 3) ndim : 3
a = np.array(range(12)).reshape(2,2,3)
b = np.array(range(8)).reshape(2,2,2)
c = np.concatenate((a,b), axis=2)
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
print( c )
print( "shape :", c.shape, "ndim :", c.ndim )
[[[ 0 1 2]
[ 3 4 5]]
[[ 6 7 8]
[ 9 10 11]]]
shape : (2, 2, 3) ndim : 3
[[[0 1]
[2 3]]
[[4 5]
[6 7]]]
shape : (2, 2, 2) ndim : 3
[[[ 0 1 2 0 1]
[ 3 4 5 2 3]]
[[ 6 7 8 4 5]
[ 9 10 11 6 7]]]
shape : (2, 2, 5) ndim : 3
np.hstack(tup)
Signature: np.hstack(tup)
Docstring:
Stack arrays in sequence horizontally (column wise).
This is equivalent to concatenation along the second axis, except for 1-D
arrays where it concatenates along the first axis. Rebuilds arrays divided
by hsplit
.
a = np.array([1,2,3])
b = np.hstack((a,a)) # np.concatenate([a,a], axis=0) 같은 동작
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
[1 2 3]
shape : (3,) ndim : 1
[1 2 3 1 2 3]
shape : (6,) ndim : 1
a = np.array([[1,2,3],[4,5,6]])
b = np.hstack((a,a))
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
[[1 2 3]
[4 5 6]]
shape : (2, 3) ndim : 2
[[1 2 3 1 2 3]
[4 5 6 4 5 6]]
shape : (2, 6) ndim : 2
np.vstack(tup)
Signature: np.vstack(tup)
Docstring:
Stack arrays in sequence vertically (row wise).
This is equivalent to concatenation along the first axis after 1-D arrays
of shape (N,)
have been reshaped to (1,N)
. Rebuilds arrays divided byvsplit
.
np.vstack()의 경우 차원을 자동으로 증가시켜준다.
a = np.array([1,2])
b = np.vstack((a,a))
# np.concatenate(([[1,2]], [[1,2]]), axis=0)와 같은 역할로, concat 함수를 쓰려면 shape 변형이 필요
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
[1 2]
shape : (2,) ndim : 1
[[1 2]
[1 2]]
shape : (2, 2) ndim : 2
a = np.array([[1,2,3],[4,5,6]])
b = np.vstack((a,a))
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
[[1 2 3]
[4 5 6]]
shape : (2, 3) ndim : 2
[[1 2 3]
[4 5 6]
[1 2 3]
[4 5 6]]
shape : (4, 3) ndim : 2
np.vstack()과 np.hstack()은 3차원 이상의 배열에서도 사용할 수 있지만, 특정 축을 따라 연결하려는 복잡한 경우에는 더 일반적인 np.concatenate() 함수가 유용하다.
a = np.array(range(6)).reshape(1,2,3)
b = np.vstack((a,a))
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
[[[0 1 2]
[3 4 5]]]
shape : (1, 2, 3) ndim : 3
[[[0 1 2]
[3 4 5]]
[[0 1 2]
[3 4 5]]]
shape : (2, 2, 3) ndim : 3
a = np.array(range(6)).reshape(1,2,3)
b = np.hstack((a,a))
print( a )
print( "shape :", a.shape, "ndim :", a.ndim )
print( b )
print( "shape :", b.shape, "ndim :", b.ndim )
[[[0 1 2]
[3 4 5]]]
shape : (1, 2, 3) ndim : 3
[[[0 1 2]
[3 4 5]
[0 1 2]
[3 4 5]]]
shape : (1, 4, 3) ndim : 3
'Python > Numpy' 카테고리의 다른 글
[Numpy] 006. 배열 자르기 (Split) (0) | 2023.08.08 |
---|---|
[Numpy] (문제) #001. Reshape & Concat (0) | 2023.08.07 |
[Numpy] 004. 배열 인덱싱 & 슬라이싱 (Indexing & Slicing) (0) | 2023.08.06 |
[Numpy] 003. 배열 형태 변경하기 (Reshape) (0) | 2023.08.05 |
[Numpy] 002. 여러가지 ndarray 생성 함수 (0) | 2023.08.04 |