[기초선형대수학] Scalar Multiplication in Python

리스트의 각 원소를 상수배(scalar multiple)하는 연산을 만들어보자

  • 구현 동기 : 파이썬 list 자료구조는 * 연산자를 사용하면 리스트 내의 원소를 int 번 반복하는 것에 그치고, 벡터에 대한 스칼라 배 연산이 불가능하다. 넘파이를 사용해서 쉽게 계산할 수도 있지만, 함수 구조화 연습 차원에서 한번 직접 만들어보았다.

  • 내가 원하는 연산

    x:=(x1,...,xn)Rn,kR\vec x := (x_1, ...\,, x_n) \in \R^n,\,\,k \in \R

    아주 간단한 연산인 kxRnk\cdot\vec x \in \R^n

Python implementation

def scalar_multiple(x, y):
    assert type(x) == list
    assert type(y) == int
    for i in range(0, len(x)):
        x[i] = x[i]*y
        if x[i] == x[i]*y: 
            break 
        # 스칼라배하는 연산이 i번만큼 실행되어서 1번만 실행 및 출력하려고 반복문 깬 것.
        print(x)
    
e1 = [1,0,0] # 표준단위벡터 e1
k = 2 # scalar in R^1

scalar_multiple(e1, k)

numpy를 활용해서 매우 쉽게 특정 벡터에 스칼라배 연산하는 방법

import numpy as np
vec = np.array([1,0,0])
k_0 = 2 
np.multiply(vec,k_0)

ㄷㄷ..

고차원 벡터, 행렬연산에서 numpy가 얼마나 강력할지 아직 감도 안온다.

좋은 웹페이지 즐겨찾기