본문 바로가기
공부/데이터

[python-numpy] 차원 수정(reshape)

by demonic_ 2019. 11. 5.
반응형

- 1차원, 2차원 만들기

- 1차원 -> 2차원으로 변형

- 2차원 -> 1차원으로 변형

 

 

1차원 만들기

np.arange(10)

# 결과
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

 

2차원 만들기

np.zeros((3,2))

# 결과
array([[0., 0.],
       [0., 0.],
       [0., 0.]])

데이터 형태를 살펴보면 float 형태로 만들어졌음을 확인할 수 있다

np.zeros((3,2)).dtype

# 결과
dtype('float64')

만약 유형을 고정하고 싶다면 다음 옵션을 준다

array2 = np.zeros((3,2), dtype='int')
print(array2)
print('---')
print(array2.dtype)

# 결과
[[0 0]
 [0 0]
 [0 0]]
---
int64

 

 

 

차원과 크기 변경하기

1차원 -> 2차원으로 변형

array1 = np.arange(10)
print(array1)
print('---')
print(array1.reshape(2,5))

# 결과
[0 1 2 3 4 5 6 7 8 9]
---
[[0 1 2 3 4]
 [5 6 7 8 9]]

 

 

차원을 크기에 맞지 않게 수정하면 에러를 낸다

0~9 까지 값이 10개인 것을 3,3 차원으로 바꾸면 다음과 같은 에러가 발생한다.

array1.reshape(3,3)

# 결과
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-17-3f231a1aa789> in <module>
----> 1 array1.reshape(3,3)

ValueError: cannot reshape array of size 10 into shape (3,3)

 

설정에 -1을 넣으면 자동으로 변환한다

array1.reshape(-1, 5)
# reshape(2, 5)와 같은 형태로 변형

# 결과
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
array1.reshape(-1, 2)

# 결과
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])

 

 

1차원으로 변형

n차원의 수를 1차원으로 변형한다

array1_test = array1.reshape(-1, 2)
array1_test

# 결과
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])


# 1차원으로 변경
array1_test.reshape(-1,)

# 결과
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

끝.

반응형

댓글