일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- array
- django
- google apps script
- Github
- Google Spreadsheet
- numpy
- SQL
- list
- Kotlin
- math
- PySpark
- Python
- gas
- matplotlib
- 파이썬
- Excel
- Apache
- c#
- PANDAS
- Mac
- PostgreSQL
- Google Excel
- GIT
- Redshift
- hive
- dataframe
- string
- Java
- Tkinter
- Today
- Total
달나라 노트
Python numpy : reshape (array의 구조 변경, array의 차원 변경) 본문
Python numpy : reshape (array의 구조 변경, array의 차원 변경)
CosmosProject 2021. 8. 6. 01:58
array에 10이라는 숫자만 전달하면 위처럼 그냥 숫자데이터가 나옵니다.
별도로
import numpy as np
arr_test = np.array(10)
print(arr_test)
-- Result
10
이것을 1행 1열의 데이터로 바꾸고싶으면 어떻게할까요.
이때 reshape method를 사용할 수 있습니다.
import numpy as np
arr_test = np.array(10)
print(arr_test)
arr_test = arr_test.reshape(1, 1)
print(arr_test)
-- Result
10
[[10]]
위처럼 reshape을 사용하면 [[10]] 처럼 1행 1열의 데이터로 변환되었습니다.
- reshape(1, 1)
1 by 1(1 x 1) 데이터로 변환하라는 의미
import numpy as np
arr_test = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print(arr_test)
arr_test = arr_test.reshape(4, 3)
print(arr_test)
-- Result
[ 1 2 3 4 5 6 7 8 9 10 11 12]
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
1부터 12까지의 정수로 이뤄진 1차원 array를 reshape으로 형태 변경을 해보았습니다.
reshape(4, 3)인 것으로 보아 4 by 3(4 x 3)의 array로 변환한다는 것으로 예측할 수 있습니다.
reshape(4, 3) -> 하나의 내부 list에 3개 데이터가 있고 총 4개의 내부 list가 있도록 변환
reshape(4, 3)은 4와 3의 2개의 인자를 가지고있습니다.
따라서 return되는 array도 2차원 데이터가 됩니다.
import numpy as np
arr_test = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24])
print(arr_test)
arr_test = arr_test.reshape(2, 3, 4)
print(arr_test)
-- Result
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
[[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[13 14 15 16]
[17 18 19 20]
[21 22 23 24]]]
reshape은 위처럼 여러 인자를 줄 수 있습니다.
2, 3, 4 총 3개의 인자가 reshape에 들어갔으므로 return되는 array는 3차원이 됩니다.
import numpy as np
arr_test = np.array(
[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]]
)
print(arr_test)
arr_reshaped = arr_test.reshape(3, 4)
print(arr_reshaped)
-- Result
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
reshape method는 단순히 1차원 array를 다차원으로 바꾸는 것 뿐 아니라 위 예시처럼 다차원 array를 또 다른 모양의 다차원 array로 바꿀 수 있습니다.
위 예시는 4행 3열의 array를 4행 3열의 array로 바꾼 것입니다.
위 예시로부터 array의 작용 과정을 이해하기 쉽게 알아보면 다음과 같습니다.
1. reshape method가 적용된 array 속에 존재하는 모든 요소들을 순서대로 1차원 array로 만든다.
2. 이렇게 만든 1차원 array를 reshape할 모양의 array에 순서대로 채워넣는다.
즉, 기존 array가 몇차원이건 상관없이 그냥 기존 array의 모든 요소들을 순서대로 가져와서 새로운 모양의 array로 재구성한다고 보면 됩니다.
- 참고
중요한 내용은 아닙니다만 아래 예시처럼 reshape의 parameter로서 tuple의 형태로 전달할 수 있습니다.
tuple로 전달하건 지금까지 봤던 예시처럼 3, 4 형태로만 전달하건 결과는 동일합니다.
import numpy as np
arr_test = np.array(
[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]]
)
print(arr_test)
arr_reshaped = arr_test.reshape((3, 4))
print(arr_reshaped)
-- Result
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
'Python > Python numpy' 카테고리의 다른 글
Python numpy : isnan (NaN값 다루기, None값 다루기, null값 다루기, NaN값 테스트, None값 테스트, nvl, coalesce, numpy isnan, math isnan, pandas isna) (0) | 2021.08.20 |
---|---|
Python numpy : arange (특정 범위 내에서 1차원 array 생성하기) (0) | 2021.08.06 |
Python numpy : arrary (numpy array 만들기, array의 연산) (0) | 2021.08.06 |
Python numpy : average, median (numpy로 list 속 평균과 중간값 구하기) (0) | 2021.07.26 |
Python numpy : exp (자연상수와 지수) (0) | 2021.07.02 |