NumPy 배열 재구성


배열 재구성

Reshaping은 배열의 모양을 변경하는 것을 의미합니다.

배열의 모양은 각 차원의 요소 수입니다.

모양을 변경하여 차원을 추가 또는 제거하거나 각 차원의 요소 수를 변경할 수 있습니다.


1차원에서 2차원으로 변형

예시

12개의 요소가 있는 다음 1차원 배열을 2차원 배열로 변환합니다.

가장 바깥쪽 차원에는 각각 3개의 요소가 있는 4개의 배열이 있습니다.

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(4, 3)

print(newarr)

1차원에서 3차원으로 변형

예시

12개의 요소가 있는 다음 1차원 배열을 3차원 배열로 변환합니다.

가장 바깥쪽 차원에는 각각 2개의 요소가 있는 3개의 배열이 포함된 2개의 배열이 있습니다.

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(2, 3, 2)

print(newarr)


어떤 형태로든 변형할 수 있습니까?

예, 모양 변경에 필요한 요소가 두 모양에서 동일하다면 가능합니다.

8개 요소 1D 배열을 2행 2D 배열의 4개 요소로 변형할 수 있지만 3x3 = 9개 요소가 필요하므로 3개 요소 3행 2D 배열로 변형할 수 없습니다.

예시

8개의 요소가 있는 1D 배열을 각 차원에 3개의 요소가 있는 2D 배열로 변환해 보십시오(오류 발생).

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(3, 3)

print(newarr)

반환 복사 또는 보기?

예시

반환된 배열이 복사본인지 뷰인지 확인합니다.

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr.reshape(2, 4).base)

위의 예는 원래 배열을 반환하므로 뷰입니다.


알 수 없는 차원

하나의 "알 수 없는" 차원을 가질 수 있습니다.

즉, reshape 방법에서 치수 중 하나에 대해 정확한 수를 지정할 필요가 없습니다.

값으로 전달 -1하면 NumPy가 이 숫자를 계산합니다.

예시

8개의 요소가 있는 1D 배열을 2x2 요소가 있는 3D 배열로 변환:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(2, 2, -1)

print(newarr)

참고:-1 하나 이상의 차원으로 전달할 수 없습니다 .


어레이 병합

배열을 병합한다는 것은 다차원 배열을 1D 배열로 변환하는 것을 의미합니다.

우리는 reshape(-1)이것을 할 수 있습니다.

예시

배열을 1D 배열로 변환:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

newarr = arr.reshape(-1)

print(newarr)

참고: numpy에는 배열의 모양을 변경 하고 요소 , flatten, 을 재정렬하기 위한 많은 기능이 있습니다 . 이들은 numpy의 중급에서 고급 섹션에 속합니다.ravelrot90flipfliplrflipud


연습으로 자신을 테스트하십시오

연습:

올바른 NumPy 메서드를 사용하여 배열의 모양을 1차원에서 2차원으로 변경합니다.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)