# AI 이론/Numpy

[Numpy] N차원 배열 정렬 및 형태 변경

alz 2022. 1. 6. 21:08

1,2차원 배열의 정렬

 

●1차원 배열의 정렬

일반 파이썬의 배열 정렬과 똑같다

 

●2차원 배열의 정렬

2차원 배열의 경우를 보면, 3가지로 정렬이 가능하다

axis = None 일때 : 2차원 배열을 1차원 배열로 정렬

axis = 1일때 : 각 x축마다 정렬, (각 열으로 정렬되어있다)

axis = 2일때 : 각 y축마다 정렬, (각 행마다 정렬되어있다)

 

●2차원 배열의 정렬 : argsort() 정렬은 하는데, 배열의 값이 인덱스로

axis = 0일때는 각 열마다 정렬이다.

1열을 보면, [10,5,8] -> [5,8.10]으로 정렬된 상태인데 이때 각각의인덱스의 변화는

[0,1,2] ->[1,2,0]으로 정렬

 

배열의 차원 변환 및 차원추가,축소

배열의 차원 변환 : resize(), reshape(), ravel()

차원추가, 축소 : expands_dims(),squeeze()

 

●reshape(), resize() ,ravel() 사용 

reshape()의 경우  reshape(row,col) 이나 reshape(z,x,y)식으로 사용

인자에 -1을 입력시에, 자동으로 값을 계산해서 배열을 변환 시켜준다 

-1은 하나만 써야한다

3차원 배열의 경우를보면,reshape(3,4,-1) = reshape(3,4,1)과 같이 나누어지는데

z = 3 , row = 4 , col = 1 이다.

 

●차원 추가 및 축소

차원 추가

arr는 현재 2차원 배열 (2 x 3)

axis =1 로 차원 추가를 하면, (2,1,3)이된다.

(axis = 0,axis = 1,axis=2) 에 해당 위치에 차원 추가

 

 

차원 축소

현재 arr의 차원은 (1,2,2)에서

axis = 0을 축소하게되면, 1인부분이 없어짐

 

 

배열의 추가,삭제(insert(),delete())

●insert(배열명,axis = 축위치)

1차원 배열은 insert(배열명,인덱스위치,값)으로 삽입

2차원 배열의 경우 insert(배열명,인덱스,값, 기준축)으로 삽입

이때, 그축으로 값이 모두 추가가 된다

 

●delete(배열명,axis = 축위치)

insert와 동작방식은 같다

delete(배열,인덱스,축) :인덱스와 축을기준으로 삭제

 

배열의 병합(append,vstack,hstack) 및 concatenate()

append(배열1,배열2,axis= 축) : append의 경우에는 axis를 명시해서 사용한다

vstack(배열1,배열2) : vstack은 append()에서 axis= 0으로, x축에 배열을 병합

hstack(배열1,배열2) : hstack은 append()에서 axis=1 .으로,y축에 배열을 병합

 

append를 이용한 병합(axis = 1) = hstack

 

vstack,hstack을 이용한 병합

 

「concatenate() 를이용한 병합 방법」

concatenate((array1,array2),axis = ? ) 방식으로 사용

 

 

배열의 분할(vsplit,hsplit)

함수 이름과 위의 vstack,hstack 의 경우를 보면 대충 감이 온다

vsplit은 axis = 0을 기준으로 배열을 분할하는것이고

hsplit은 axis = 1을 기준으로 배열을 분할하는것이다

 

주의할 점은 행의 개수에 맞게 분할을 해주어야 한다는 것이다

즉, 행의 개수의 약수로 분할해야한다

만약 행이 5개인데, 2개로 분할하고자하면, error 발생

np.vsplit(array,분할할 개수)

np.hsplit(array,분할할 개수)

 

3차원 배열의 경우, 분할 방식

vsplit 의경우, z축 단위로 자르지만,

hsplit의 경우, 각 z축내의 x,y행렬에서 y축을 기준으로 분할

 

'# AI 이론 > Numpy' 카테고리의 다른 글

[Numpy] 배열의 연산 및 벡터 내적  (0) 2022.01.05
[Numpy] 넘파이 배열생성  (0) 2022.01.05