일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SQLD
- 그래프
- Depthwise Separable Convolution
- mobilenet
- numpy
- SQL
- Inductive Bias
- pytorch
- depthwise convolution
- resnet
- dp
- CROSS JOIN
- bottleneck
- 백준
- 인접리스트
- outer join
- Two Pointer
- 엔터티
- skip connection
- 1x1 Convolution
- 데이터모델링
- dfs
- feature map
- 인접행렬
- 식별자
- get_dummies()
- 연산량 감소
- BFS
- SQLD 후기
- 정규화
- Today
- Total
SJ_Koding
Numpy 배열 형태 변경(reshape)과 데이터 유형 변경 (dtype, astype) 본문
안녕하세요! 성지코딩입니다. 이번 게시글은 Numpy의 배열 형태 변경과 데이터 유형 변경에 대해 알아봅니다.
Numpy 배열 형태 변경
Numpy Array의 가장 큰 장점은 형태(shape)를 자유자재로 변경이 가능합니다.
- 단, 변경 전 데이터 개수와 변경 후 데이터의 개수(size)는 같아야 합니다.
Numpy Array의 형태를 바꾸기 위해서는 reshape 함수를 이용합니다.
reshape에서 (-1, x)의 형태를 사용할 수 있습니다.
-1은 딱 한 번만 사용할 수 있으며 자동으로 적절한 형태를 계산합니다.
단, (-1자리의 들어올 값) * x 가 원소의 개수와 동일해야만 사용이 가능합니다.
예를 들어 (18, ) 사이즈의 numpy변수 num이 있다고 할 때
ex) num.reshape(-1, 6) 에서 -1 자리에는 자동으로 3으로 들어가게 됩니다.
ex) (9, ) shape를 (3, 3) shape로 변경 한다면 다음과 같이 변경됩니다.
before (9, )
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
after (3, 3)
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
번외: shape이 (3, ) 이나 (15, )등과 같이 표현되는 경우는 1차원 벡터를 의미합니다. (3, )은 원소가 3개인 벡터를 의미합니다.
벡터는 1차원, 행렬은 2차원 이상이라고 간단하게 생각하셔도 됩니다!
코드로 살펴보기
Numpy 배열 형태 변경
array = np.arange(16)
array, array.shape
(array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
(16, )
array.reshape(4, 4), array.reshape(4, 4).shape
(array[ [ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9,10,11],
[12,13,14,15]]),
(4, 4))
앞서, reshape에서 -1을 넣게 되면 자동으로 shape을 계산을 하여 값이 넣어지게 된다고 설명했습니다.
예를 들어 (16 ,)크기의 데이터가 있을 때 (-1, 8)을 해준다면 -1에는 어떤 값이 들어갈까요?
네, 2가 들어가게 됩니다. -1자리를 k라고 할 때, k * 8 == 16 가 되어야 하기 때문입니다.
(reshape는 전, 후의 사이즈가 동일해야합니다.)
array.reshape(-1, 8), array.reshape(-1, 8).shape
(array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9,10,11,12,13,14,15]]),
(2, 8))
Numpy 데이터 유형 변경
Numpy Array는 모든 요소가 동일한 자료형을 가집니다.
Array를 생성시 dtype을 생략하는 경우, 자동으로 데이터 타입을 결정합니다.
x = np.array([[1, 2], [3, 4]])
x, xdtype
(array([[1., 2.],
[3., 4.]]),
dtype('float64'))
혹은, 이미 만들어진 배열의 데이터 유형을 변경하기 위해서는 astype 함수 또는 특정 데이터 유형의 이름을 가진 함수를 사용합니다.
x.astype(np.int32)
array([[1, 2],
[3, 4]]
np.int32(x)
array([[1, 2],
[3, 4]]
x.astype('int')
array([[1, 2],
[3, 4]]
다음 시간에는 Numpy의 꽃이라고 할 수 있는 Numpy 연산입니다. 특히 정말 중요한 Broadcast(Element WIse)에 대해 자세히 다룹니다. 감사합니다.
-sjkoding-
'Data analysis > Numpy' 카테고리의 다른 글
Numpy 배열 저장과 불러오기 (1) | 2022.01.16 |
---|---|
Numpy 인덱싱(정수 인덱싱, 조건 인덱싱, 팬시 인덱싱) (0) | 2022.01.02 |
Numpy의 연산, Broadcast(Element Wise) (0) | 2022.01.01 |
Numpy의 속성 (0) | 2021.12.31 |
Numpy의 개요와 생성 (1) | 2021.12.31 |