feat. numpy의 행렬 연산과 성능
안녕하세요, 브래드입니다.
오늘은 지난 시간에 이어서 numpy 학습의 연장선으로 numpy의 행렬 연산과 성능에 대해 함께 공부해볼게요.
행렬은 행과 열로 이루어진 2차원 배열을 말합니다.
대부분의 정형 데이터 세트는 행렬 형태로 이루어져 있으며, 행렬의 덧셈과 뺄셈 혹은 곱셈과 나눗셈은 정해진 규칙이 존재합니다.
행렬의 덧셈과 뺄셈은 연산되는 두 행렬의 차원이 같아야 합니다.
행렬의 곱셈과 나눗셈에 있어서는 두 가지로 구분할 수 있습니다.
먼저 같은 위치에 있는 값들을 곱하거나 나눌 때 사용하는 Element-wise 연산은 연산되는 두 행렬의 차원이 같아야 합니다.
두 번째로 내적연산은 연산되는 앞행렬(열)과 뒤행렬(열) 차원이 같아야 계산이 진행됩니다.
즉, 다음 예시처럼 2x4 형태로 두 행렬의 차원이 같으므로 data1 + data2와 같은 행렬의 덧셈이 가능한 것을 확인할 수 있습니다.
행렬의 곱셈과 나눗셈은 앞서 살펴본 대로 Element-wise 연산과 내적연산으로 나눌 수 있습니다.
위 예시에서는, 현재 4x4 형태로 행렬의 곱셈 중 Element-wise 연산이 가능하므로 data1 * data2의 값이 도출된 것을 확인할 수 있습니다.
다음은 내적연산으로 나타낸 값입니다.
np.dot()을 사용하여 내적연산을 사용할 수 있으며, 519000이라는 값은 10x1000 + 20x5000 + 30x5500 + 40x6100을 진행하여 도출된 값입니다.
예시와 같은 4x4가 아니더라도, 내적연산은 4x2와 2x4 혹은 5x3과 3x5와 같이 앞행렬(열)과 뒤행렬(행)의 차원이 같으면 계산될 수 있습니다.
행렬 집계 함수는 합계, 최대, 최소, 평균, 표준편차 등이 존재합니다.
합계: np.sum
최대: np.max
최소: np.min
평균: np.mean
표준편차: np.std
또한, np.sum(변수, axis=0)을 통해 행방향인 위에서 아래로의 합계를, np.sum(변수, axis=1)을 통해 열방향인 왼쪽에서 오른쪽으로 합계를 구할 수 있습니다.
Broadcasting 연산은 저차원 배열의 연산은 고차원 배열의 연산으로 확장시켜 연산을 해주게 합니다.
따라서, 차원이 맞지 않아 에러가 나는 부분을 Broadcasting 연산을 통해 간편하게 사용할 수 있습니다.
위의 예시는 Broadcasting 연산의 예시로, 3차원 배열과 2차원 배열을 더했더니 3차원 배열이 나온 것을 확인할 수 있습니다.
더하기 뺄셈, 혹은 곱하기 나누기 등도 데이터에 곧바로 실시하면 모든 데이터에 해당 연산이 각각 실행됨을 알 수 있습니다.
지금까지 파이썬으로 데이터 전처리하기 두 번째 시간으로 numpy의 행렬 연산과 성능 등에 관해 함께 알아보았습니다.
다음 시간에는 파이썬의 전처리를 도와주는 또 다른 라이브러리인 pandas에 대해 알아볼게요.
브래드였습니다. 감사합니다.