Numpy란?
- 다차원 배열을 효과적으로 처리할 수 있도록 도와주는 도구
- 현실 세계의 다양한 데이터는 배열 형태로 표현할 수 있습니다
- pyhon의 기본 list에 비해 빠르고 강력한 기능을 제공
Numpy의 차원
- 1차원 축(행): axis 0 ⇒ Vector
- 2차원 축(열): axis 1 ⇒ Martix(행렬)
- 3차원 축(채널): axis 2 ⇒ Tensor(3차원 이상)

Numpy의 기본 사용법
import numpy as np
list_data = [1, 2, 3]
array = np.array(list_data) # 특정한 list를 numpy 자료형
print(list_data)
print(array)
print(array.size)
print(array.dtype)
print(array[2])

import numpy as np
array1 = np.arange(4) # 0~3 까지의 배열 만들기
print(array1)
# 4 * 4의 2차원 배열 + 원소다 실수형
array2 = np.zeros((4, 4), dtype=float) # 특정한 데이터를 만들되 0으로 초기화 되었으면 좋겟다, dtype: 특정한 자료형으로 만든다
print(array2)
#3 * 3의 2차원 배열 + 원소 자료형: 문자형
array3 = np.ones((3,3), dtype=str)
print(array3)
# 0 ~ 9 데이터를 랜덤하게 초기화 된 배열 만들기
array4 = np.random.randint(0, 10, (3, 3))
print(array4)
# 평균이 0이고, 표준편차가 1인 표준 정규를 띄는 배열
array5 = np.random.normal(0, 1, (3, 3))
print(array5)

배열 합치기
import numpy as np
#배열 가로축으로 합치기
array1 = np.array([1,2,3])
array2 = np.array([4, 5, 6])
array3 = np.concatenate([array1, array2]) # 배열에 감싸서 넣어주기
print(array3.shape) # 크기
print(array3)
#배열 형태 바꾸기
array4 = np.array([1,2,3,4])
array5 = array4.reshape((2,2)) # 배열의 형태를 자유자제로 바꿀 수 있다~
print(array5)
#배열을 세로축으로 합치기
array6 = np.arange(4).reshape(1,4)
array7 = np.arange(8).reshape(2,4)
array8 = np.concatenate([array6, array7], axis= 0) #axis=0을 통해 세로를 기준으로 합치기
print(array6)
print(array7)
print(array8)