배열은 각 축을 따라 요소들의 수만큼 주어진 모양을 가집니다. 배열의 모양은 다양한 명령으로 변경할 수 있습니다. 다음 세 명령은 모두 수정된 배열을 반환하지만 원래 배열은 변경하지 않습니다.
import numpy as np
a = np.floor(10*np.random.random((3,4)))
print("3행 4열 배열 생성\n", a)
print("a 배열의 shape = ",a.shape)
print("a.ravel 결과값\n",a.ravel()) # returns the array, flattened
print("a.reshape(6,2) 결과값\n",a.reshape(6,2)) # returns the array with a modified shape
print("a.T 결과값\n",a.T) # returns the array, transposed
print("a.T.shape 결과값 = ",a.T.shape)
print("a.shape 결과값 = ",a.shape)
위의 코드를 수행 하면 다음과 같은 결과를 출력합니다.
3행 4열 배열 생성
[[8. 0. 1. 7.]
[9. 2. 6. 1.]
[9. 9. 3. 5.]]
a 배열의 shape = (3, 4)
a.ravel 결과값
[8. 0. 1. 7. 9. 2. 6. 1. 9. 9. 3. 5.]
a.reshape(6,2) 결과값
[[8. 0.]
[1. 7.]
[9. 2.]
[6. 1.]
[9. 9.]
[3. 5.]]
a.T 결과값
[[8. 9. 9.]
[0. 2. 9.]
[1. 6. 3.]
[7. 1. 5.]]
a.T.shape 결과값 = (4, 3)
a.shape 결과값 = (3, 4)
np.random.random은 0 ~ 1 사이의 균등 분포로 표본을 추출합니다. np.floor 함수로 최대 정수로 변환합니다. 따라서 a = np.floor(10*np.random.random((3,4))) 코드에 의해 3행 4열의 1에서 10사의의 값을 갖는 랜덤 정수 배열이 생성 됩니다.
ravel 함수는 다차원 배열(array)을 1차원 배열로 평평하게 펴주는 함수입니다. 배열의 차원(Dimension)을 재구조화, 변경하고자 할 때 reshape() 메소드를 사용합니다. 가령, 3개의 행과 4개의 열로 구성된 2차원의 배열로 재설정하고 싶으면 reshape(3, 4)처럼 사용하면 됩니다.
T 함수는 각 요소들을 행, 열을 바꾸는 전치(transpose)를 수행합니다.