[Numpy] 연산,통계,집계함수
- Python/Numpy
- 2020. 5. 21.
ndarray를 가지고 연산과 통계를 이끌어내봅시다.
Jupyter에서 numpy를 np로 바꾸고 시작하겠습니다.
먼저 np. 하고 tap을 누르면 아래와 같은 조그마한 창이 뜹니다.
이게 np로 할 수 있는 함수들을 나열해놓은 창입니다.
스크롤을 내려보면 정말 많은 함수가 내장되어 있는지 느낄 수 있을겁니다.
이 많은 함수를 다 일일히 배울수는 없습니다. 혹시 자신이 써야 하는 함수에 대해서 알고 싶다면
Jupyter에서 해당 함수에 커서를 놓은후 shift+tap을 누르면 자세한 설명이 나와있으니
그걸 참고하시면 좋을 것 같습니다.
shift +tap 을 누르면 위와 같은 창이 뜹니다.
이번 포스팅에서는 ndarray의 연산과 통계, 집계를 할 때에 쓰는 함수들을 소개할까 합니다.
함수가 굉장히 많지만 정말 자주 쓰는 것 위주로 설명하겠습니다.
연산함수
- 더하기(add)
- 빼기(substract)
- 곱하기(multiply)
- 나누기(divide)
add
add는 x+y 와 같은 의미로 쓰입니다. 배열 형태가 같아야 할 수 있습니다.
예외적으로 배열형태가 달라도 연산이 가능한데 이걸 Broadcasting라고 합니다.
Braodcasting에 대해선 나중에 따로 포스팅하겠습니다.
편의상 seed로 random 배열을 지정하고 시작하겠습니다.
np.random.seed(10)
x = np.random.rand(15).reshape(3,5)
y = np.random.rand(15).reshape(3,5)
print(x)
print(y)
np.add(x,y)
위에서처럼 add를 이용해 할 수도 있고 직접 x+y로 해도 같은 결과가 나옵니다. 다른 연산(-,*,/)도 가능합니다.
x+y
subtract
substract는 당연히 x-y와 같은 의미입니다.
np.subtract(x,y)
multiply
x*y 이며 각각의 원소끼리 곱합니다. 행렬 곱은 하지 않습니다.
np.multiply(x,y)
divide
x/y 와 같으며 각각의 원소끼리 나눕니다.
np.divide(x,y)
통계
numpy로 통계계산도 할 수 있습니다. 평균, 분산,중앙값만 해보겠습니다.
거의 모든 통계관련함수는 원리가 비슷하기 때문에 금방 익힐 수 있습니다. 지금 설명하고자 하는 numpy의 내장함수는 ndarray가 가지고 있는 원소에 대해서 평균을 구하기 때문에 ndarray의 원소의 평균, 분산, 중앙값을 의미합니다.
평균
평균은 영어로 mean 이죠. 그래서 mean을 쓰면 바로 됩니다. 아무리 생각해도 통계함수는 너무 편한것 같습니다.
np.random.seed(20)
z = np.random.rand(15).reshape(3,5)
print(z)
np.mean(z)
분산
분산은 영어로 variance 라 var를 쓰면 분산이 바로 나옵니다.
np.var(z)
중앙값
중앙값은 영어로 median이니 median으로 중앙값을 바로 불러낼 수 있습니다.
np.median(z)
통계함수는 이미 함수로 다 설정이 되어있어서 불러내기만 하면 바로바로 나옵니다.
다만 데이터가 많아지고 복잡하면 단순한 numpy의 내장함수로는 구현하기 어려운 것들이 많습니다.
간단한건 일일히 계산식을 작성하지 않아도 간단히 할 수 있다는 것을 꼭 기억하시고 코딩시간을 많이 아끼시기 바랍니다.
집계함수
집계함수에는 합계와 누적합계 등등이 있는데 이것도 가능합니다. 당연히 ndarray의 원소들의 합계와 누적합계를 이야기합니다.
합계(sum)
np.sum(z)
합계를 할 때 열끼리 하고 싶고 행끼리 하고 싶을때가 있습니다. 그럴 때는 axis를 이용합니다. axis는 사실 좀 더 설명이 필요하지만 크게 어려운건 없습니다. 수학에서 함수를 x축,y축,z축으로 나누어서 그림을 그렸었는데 축이 바로 axis입니다. 일단은 x축 방향, y축방향, z축 방향으로 생각하시면 되겠습니다. 더 자세한 설명은 추후에 포스팅하겠습니다.
행의 합을 구하고 싶다면 axis=0을 입력합니다.
np.sum(z,axis=0)
열의 합을 구하고 싶다면 axis=1을 입력합니다.
np.sum(z,axis=1)
누적합계(cumsum)
원소를 하나씩 더해서 누적합계를 출력합니다.
np.cumsum(z)
열방향으로 하나씩 더해서 출력을 합니다.
기초적인 연산방법에 설명했습니다.
'Python > Numpy' 카테고리의 다른 글
[Numpy] Broadcasting(브로드캐스팅) (2) | 2020.05.27 |
---|---|
[파이썬] Numpy axis(축) 이해 (2) | 2020.05.25 |
[파이썬] Numpy 모양 바꾸기(reshape) (0) | 2020.05.19 |
ndarray 인덱싱,슬라이싱 (0) | 2020.05.17 |
ndarray 랜덤한값 생성 (0) | 2020.05.14 |