본문 바로가기

Biusiness Insight/Data Science

[Python] 행렬의 연산(Matrix Multiplication) Numpy Dot 예제

반응형

 

Numpy Dot → np.dot( )

  • Numpyt Array를 곱할 때 사용
  • 두 입력 배열(행렬, 벡터)의 내적 계산
    • 입력 값이 모두 스칼라이면 1차원 배열을 생성하고, 그렇지 않으면 n차원 배열 생성
    • 입력 값이 모두 벡터이면 행렬의 곱을 계산
  • source : https://numpy.org/doc/stable/reference/generated/numpy.dot.html

 

np.dot( )을 이용한 2x2 행렬의 곱

import numpy as np

a= [[1, 0], [0, 1]]
b = [[4, 1], [2, 2]]
np.dot(a, b)

 

np.dot( )을 이용한 두 행렬 값의 곱

a = np.arange(3*4*5*6).reshape((3,4,5,6))
b = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))
np.dot(a, b)[2,3,2,1,2,2]

실행결과 : 499128

sum(a[2,3,2,:] * b[1,2,:,2])

실행결과 : 499128

 

< 예제 > 행렬의 곱 : 각 국가별 획득한 메달 포인트의 합 

금메달 4포인트 / 은메달 2포인트 / 동메달 1포인트

import numpy
from pandas import DataFrame, Series

def numpy_dot():
    countries = ['Russian Fed.', 'Norway', 'Canada', 'United States',
                 'Netherlands', 'Germany', 'Switzerland', 'Belarus',
                 'Austria', 'France', 'Poland', 'China', 'Korea', 
                 'Sweden', 'Czech Republic', 'Slovenia', 'Japan',
                 'Finland', 'Great Britain', 'Ukraine', 'Slovakia',
                 'Italy', 'Latvia', 'Australia', 'Croatia', 'Kazakhstan']

    gold = [13, 11, 10, 9, 8, 8, 6, 5, 4, 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
    silver = [11, 5, 10, 7, 7, 6, 3, 0, 8, 4, 1, 4, 3, 7, 4, 2, 4, 3, 1, 0, 0, 2, 2, 2, 1, 0]
    bronze = [9, 10, 5, 12, 9, 5, 2, 1, 5, 7, 1, 2, 2, 6, 2, 4, 3, 1, 2, 1, 0, 6, 2, 1, 0, 1]
 
    olympic_df = {'country_name':Series(countries),
                            'gold': Series(gold),
                            'silver': Series(silver),
                            'bronze': Series(bronze)}
    df = DataFrame(olympic_df)
    medal_cnt = df[['gold','silver','bronze']]
    points = np.dot(medal_cnt, [4,2,1])
                    
    olympic_points = {'country_name': Series(countries),
                      'points': Series(points)}
    olympic_points_df = DataFrame(olympic_points)
    return olympic_points_df

print (numpy_dot())

np.dot( ) 행렬의 곱 실행결과 예제

 

 

반응형