전 글에 이어서 진행됩니다.


기본 사칙연산하기(더하기, 빼기, 곱하기, 나누기)

기본적으로 numpy의 연산은 python에서 연산과 비슷한 개념을 갖고 있다. 단 주의해야할 점은 행렬의 갯수가 같아야 한다. m x n 의 데이터 형태면 연산할 데이터의 형태가 모두 같아야 한다. (broadcasting을 활용해 예외도 나올 수 있다. broadcasting은 다음에 알아보도록 하자)

- np.add(x, y) -> 더하기 연산 : 이와 같은 내장함수 형태로 계산을 가능하고, x + y와 같이 연산해도 같은 값이 나온다.

- np.substract(x, y) = x - y -> 빼기 연산

- np.multiply(x, y) = x * y -> 곱하기 연산

- np.divide(x, y) = x / y -> 나누기 연산


통계함수 활용하기(평균, 분산, 중앙, 최대, 최소값 등등)

numpy에는 쉽게 활용할 수 있는 통계 관련 내장함수들이 있다.

- np.mean(x) -> 평균을 내주는 함수 , y.mean()으로도 사용가능하다.

- np.max(x) -> 최대값을 나타내주는 함수

- np.argmax(x) -> 최대값이 몇 번째 순서에 있는지 나타내주는 함수이다. 위 사진과 같이 첫 번째 값이 최대이므로 0을 나타내준다.

- np.var(x), np.median(x), np.std(x) -> 순서대로 분산, 중앙값, 표준편차를 나타내주는 함수이다.


합계함수 활용하기

연산, 통계함수와 마찬가지로 합계함수도 내장되어있다.

- np.sum(x) -> 전체 값들의 합계를 나타내준다.

- np.cumsum(x) -> 값을 누적해 더하면서, 누적합계를 나타내준다.


조건함수 활용하기

좌(any, all) , 우(where)

출력값을 boolean의 형태로 나타내주는 조건함수들이 있다.

- np.any(조건) -> 특정 조건을 만족하는 것이 하나라도 있으면 True, 아니면 False를 반환(or의 개념)

- np.all(조건) -> 모든 원소가 특정 조건을 만족한다면 True, 아니면 False를 반환(and의 개념)

- np.where(조건, true일때 값, false일때 값) -> 조건에 따라 원하는 값을 얻고 싶을 때 사용하는 함수이다.(if else개념)


선형대수 연산하기 (linalg 서브모듈 활용)

행렬의 역행렬이나, 해를 구하고 싶을 때 사용하는 함수이다.

- np.linalg.inv(x) -> 행렬의 역행렬을 구하고 싶을 때 사용한다.

- np.linalg.solve(x, y) -> Ax = B형태의 선형대수 식에서 x값을 구하고 싶을 때 사용한다. 


broadcasting이해하기

broadcasting이란 :

앞에서 shape이 같은 두 ndarray에 대한 연산은 쉽게 할 수 있었다. 하지만 예외로 broadcasting을 활용해 연산되는 두 ndarray가 다른 shape을 갖는 경우, numpy에서 자동적으로 shape을 맞춰준 후 연산해주는 것이다.

broadcasting 연산 규칙 :

1) 차원의 크기가 1일때 가능하다. 두 배열 간의 연산에서 최소한 하나의 배열의 차원이 1이라면(0번 축이든 1번 축이든; 1행이든 1열이든) 가능하다.

2) 차원의 짝이 맞을 때 가능하다. 차원에 대해 축의 길이가 동일하면 브로드캐스팅이 가능하다.

 

먼저 이와같이 a, b, c, d의 ndarray가 있다고 가정하자.

a는 4x3의 행렬, b는 3개의 값을 갖는 1차원 ndarray이다. 앞서 말한 broadcasting연산 규칙 중 두 번째 규칙인 뒷 차원의 축이 3으로 같아 연산이 가능하다.

반대로 c는 4개의 값을 갖는 1차원 ndarray이다. 차원의 축이 3과 4로 각각 달라 규칙에 어긋나 연산이 불가능하다.

a + d는 d의 차원의 크기중 1이 있어, 1번의 규칙을 만족해 연산이 가능하다.

 

상수와의 연산

broadcasting을 활용해 상수와도 연산을 할 수 있다. shape은 상관 없다.

사칙연산을 통해 조건에 맞는 값들을 boolean으로 나타낼 수도 있다.

출처:  http://www.astroml.org/book_figures/appendix/fig_broadcast_visual.html

 

 

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기