NumPy 배열 재구조화
- 이전 페이지 NumPy 배열 형태
- 다음 페이지 NumPy 배열 반복
배열 재구성
재구성은 배열의 형태를 변경하는 것을 의미합니다。
배열의 형태는 각 차원의 요소 수입니다。
재구성을 통해 차원을 추가하거나 제거하고 각 차원의 요소 수를 변경할 수 있습니다。
1-D에서 2-D로 변환
예제
다음과 같은 12개의 요소를 가진 1-D 배열을 2-D 배열로 변환합니다.
가장 외부의 차원은 4개의 배열을 가지고 있으며, 각 배열은 3개의 요소를 포함합니다:
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-D에서 3-D로 변환
예제
다음과 같은 12개의 요소를 가진 1-D 배열을 3-D 배열로 변환합니다.
가장 외부의 차원은 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행 3D 배열로 변환할 수는 없습니다.
예제
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, ravel에서 배열 형태를 변경할 수 있는 많은 기능이 있으며, rot90, flip, fliplr, flipud 등의 요소를 다시 정렬할 수 있습니다. 이 기능들은 numpy의 중급에서 고급 부분에 해당합니다.
- 이전 페이지 NumPy 배열 형태
- 다음 페이지 NumPy 배열 반복