<4주차 내용 예습>
np.sort(arr) -> 오름차순
np.sort(arr)[::-1] -> 내림차순

2차원 배열에서, 
기본적으로 np.sort(arr) -> axis=1 이다. 
(가로로 정렬)
np.sort(arr,axis=0) -> 세로로 정렬
np.sort(arr,axis=none) -> 2차원 배열이 1차원 배열로 바뀌며 오름차순 정렬.

#argsort() 
ex)
import numpy as np

a = np.array([1.5, 0.2, 4.2, 2.5])
s = a.argsort()

print(s)
print(a[s])
[1 0 3 2]
[0.2 1.5 2.5 4.2]
-> a.argsort()는 어레이 a를 정렬하는 인덱스의 어레이 [1 0 3 2]를 반환합니다.

curse of dimensionality 배열의 저주
high 차원 -> 성능 저하

<reshape(), resize(), ravel()>
-resize 함수는 reshape 함수와 기능은 동일하지만,
원본 데이터를 변경시킨다는 차이점이 있다.
-ravel 함수는 배열을 1차원으로 변경시킨다.
-reshape(행,-1) -> -1을 입력하면 자동으로 들어갈 수를 계산해준다.
but, reshape(3,-1,-1) 이런 식은 안된다.

<expand_dims(),squeeze()>
- expand_dims() -> 차원 확장
- squeeze() -> 차원 축소

<전치행렬 transpose>

배열.insert(인덱스, 값) : 입력한 인덱스에 값이 추가된다.
= np.insert(배열, 인덱스, 값)
np.delete(배열, 인덱스, axis = 1 or 0): 인덱스의 수평 혹은 수직 값 삭제

<배열 병합 함수>
append() : 배열 병합 (axis의 기준으로, 또는 1차원 배열로)
vstack() : axis = 0(x축)을 기준으로 병합
hstack() : axis = 1(y축)을 기준으로 병합
concatenate() : axis를 기준으로 병합

<배열 분할 함수>
vsplit() : axis = 0(x축,row)을 기준으로 분할
hsplit() : axis = 1(y축,col)을 기준으로 분할