Numpy 기초 4편

1. operation

 

기본적인 수학연산 지원 sum,mean,median,var,std 등등 지원

 

median 지원이 인상적

 

np.exp(), np.sqrt(), … 등 지수함수와 제곱근도 지원

 

etc-image-0
그림1. 수학연산 예시

 

표준편차는 std()로 구할 수 있고

 

median같은 경우는 a.median()이 아니라 np.median(a) 식으로 구해야 에러가 안나는듯

 

 

2. axis

 

연산 실행에서 기준이 되는 축

 

ndarray의 shape가 (a,b,c,d,e,.....)이면

 

a는 axis=0 b는 axis=1 c는 axis=2, d는 axis=3, e는 axis=4,.....

 

etc-image-1
그림2. axis=1로 (3,4) array를 sum한 모습

그림2에서 (3,4) array의 원소 합 sum()을 구한건데 axis=1이 shape에서 4를 나타내니까 원소 4개 있는 방향으로 sum을 함

 

etc-image-2
그림3. axis=0으로 (3,4) array를 sum한 모습

 

그림3에서 (3,4) array에서 원소 합 sum()을 구한건데 axis=0이 shape에서 3을 나타내니까 원소 3개 있는 방향으로 sum을 함

 

etc-image-3
그림4. axis=0,1 방향으로 sum()한 코드

 

etc-image-4
그림5. axis=0으로 3차원 tensor를 sum()한 모습

 

etc-image-5
그림6. axis=1로 3차원 tensor를 sum()한 모습

 

etc-image-6
그림7. 3차원 tensor를 axis=0,1,2 방향으로 sum()한 모습

 

sum() 말고도 다차원 tensor array의 연산의 경우 axis 연산을  지원하는 경우가 많다

 

etc-image-7
그림8. 다양한 연산의 axis 연산

 

3. concatenate

 

array를 합치는 함수

 

vstack이 위아래(vertical)로 hstack이 양옆(horizontal)으로

 

np.concatenate() 함수는 axis연산도 가능함

 

etc-image-8
그림9. vstack으로 두 array를 합친 모습

 

 

etc-image-9
그림10. hstack으로 두 array를 합친 모습

 

etc-image-10
그림11. concatenate로 axis=1 연산을 하면 hstack이 된다

 

etc-image-11
그림12. concatenate()로 axis=1 연산을 한 모습

 

------------------------------------------------------------------------------------------------------------------------------

 

당연하지만 axis=1로 concatenate 하고 싶을려면 a,b모두 axis=1 축이 있어야함

 

etc-image-12
그림13. concatenate로 axis=1 연산을 하는데 newaxis로 새로운 축을 만든 모습

 

원래 b는 axis=0밖에 없었는데 newaxis하면서 axis=1을 만들었음

 

----------------------------------------------------------------------------------------------------------------

 

위 사실을 모르고 axis = 0이면 위아래로 붙이고 axis=1이면 양옆으로 붙인다라고 생각했지만

 

etc-image-13

 

위와 같이 주어진 test array에서 3번째 4번째에 나온 [7,12]와 [10,15]를 붙여 보려고 한다

 

[7,12,10,15]를 만들려고 하는데

 

양옆으로 붙이면 된다고 생각해서

 

etc-image-14

 

axis=0이 붙여지고

 

axis=1은 에러남

 

왜 그런가? 생각해보면 당연하다

 

array([7,12])랑 array([10,15])는 차원이 0차원이어서 axis=0밖에 없어서 그렇다

 

애초에 ‘axis = 0이면 위아래로 붙이고 axis=1이면 양옆으로 붙인다’ 단순히 외워버리니 실수하는 것.

728x90

'프로그래밍 > Numpy' 카테고리의 다른 글

Numpy 기초 6편  (0) 2021.11.30
Numpy 기초 5편  (0) 2021.11.29
Numpy 기초 3편  (0) 2021.11.28
Numpy 기초 2편  (0) 2021.11.27
Numpy 기초 1편  (0) 2021.11.27