본 포스팅은 이 책을 많이 참고했다. !https://www.yes24.com/Product/Goods/99029275


자동으로 배열을 생성해보자. arange 메소드의 도움을 받을 수 있다.

1
2
3
4
5
import numpy as np

array = np.arange(20)

print(array)

결과: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] 가 출력된다. 중요한 것은 이 배열을 어떤 형태로 가져갈 것인가에 대해서다. reshape 메소드는 배열의 차원을 재정의할 수 있다.

1
2
array2 = np.reshape(array, (5, 4))
print(array2)

결과: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15] [16 17 18 19]]

2차원 배열로, 5개의 행과 4개의 열이 생성되었다.

1
2
array3 = np.reshape(array2, (5, 2, 2))
print(array3)

결과: [[[ 0 1] [ 2 3]]

[[ 4 5] [ 6 7]]

[[ 8 9] [10 11]]

[[12 13] [14 15]]

[[16 17] [18 19]]] </b>

2차원 배열을 다시 손질하여, 3차원 배열로 만들었다.

1
2
array4 = np.reshape(array2, (4, -1))
print(array4)

여기서 -1은 원래 배열의 크기를 알아내면 그 다음 값을 자동으로 추론한다. array2는 5개의 행과 4개의 열을 가지고 있다. 즉, 5×4의 크기다. 20에서 먼저 들어온 4를 나누면 5가 남는다. 따라서 array4는 4개의 행과 5개의 열을 가지게 된다.


new_axis를 통해 배열의 차원만 증가시키는 것이 가능하다.

1
2
new_axis = array[np.newaxis]
print(new_axis)

결과: [[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]]

flatten을 통해 배열의 차원을 축소시키는 것도 가능하다.

1
2
flatten = new_axis.flatten()
print(flatten)

결과: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]

배열 두 개를 병합시키는 것이 가능하다. 동형 행렬이 필요하다. 동형 행렬은 페이지, 행, 열이 같은 행렬을 의미한다. 즉, 2×2 행렬 두 개는 서로 동형 행렬이다.

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

merge1 = np.stack([array, array2], axis=0)
print(merge1)

merge2 = np.stack([array, array2], axis=1)
print(merge2)

stack 메소드를 이용하면 동형 행렬을 서로 병합해서 새로운 배열을 반환한다. 중요한 것은 axis인데, 행렬의 방향을 결정한다. axis0은 수직 방향으로 행을 추가한다. 반대로 axis1은 수평 방향으로 열을 추가한다.

결과: axis0 -> [[[0 1] [2 3]]

[[4 5] [6 7]]]

axis1 -> [[[0 1] [4 5]]

[[2 3] [6 7]]]

반대로, 나누는 것은 split 메소드를 사용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
array = np.array([[0, 1, 2], [3, 4, 5]])
array2 = np.array([[0, 1], [2, 3], [4, 5]])

split1, split2 = np.split(array, 2, axis=0)
split3, split4, split5 = np.split(array, 3, axis=1)
split6, split7 = np.split(array, 2, axis=0)

print(split1)
print(split2)

print(split3)
print(split4)
print(split5)

print(split6)
print(split7)

결과: [[0 1 2]] [[3 4 5]]

[[0] [3]] [[1] [4]] [[2] [5]]

[[0 1 2]] [[3 4 5]] </b>