[TIL] 200324 tue - 이제 시작

Sun Kim·2020년 3월 24일
0

TIL

목록 보기
1/5
post-thumbnail

자! 이제 시작이야 내 꿈을~ 내 꿈을 위한 여행 피카츄!
오늘 이 첫 게시글을 시작으로 매일 의지를 다지며 개발자 성장하도록 한다.

오늘의 계획

  • 부스트코스 - 머신러닝을 위한 Python
    1) Pythonic Code 복습
    2) 과제 1
  • 영어 - friends ep.3 쉐도윙
  • 헬스장 운동 1시간
  • 독서 - 여행의 이유

학습 내용

< Pythonic Code 과제 1 >

vector_size_check

vector 간 덧셈 또는 뺄셈 연산을 할 때, 연산이 가능한 사이즈인지를 확인하여 가능 여부를 True 또는 False로 반환함

def vector_size_check(*vector_variables):
    return all( len(vector_variables[0]) == x  for x in [len(variable) for variable in vector_variables[1:]])

vector_addition

vector간 덧셈을 실행하여 결과를 반환함, 단 입력되는 vector의 갯수와 크기는 일정하지 않음
vector_subtraction vector간 뺄셈을 실행하여 결과를 반환함, 단 입력되는 vector의 갯수와 크기는 일정하지 않음

def vector_addition(*vector_variables):
    if vector_size_check (*vector_variables) == False:
        raise ArithmeticError
    return  [sum(t) for t in zip(*vector_variables)]

vector_subtraction

vector간 뺄셈을 실행하여 결과를 반환함, 단 입력되는 vector의 갯수와 크기는 일정하지 않음

def vector_subtraction(*vector_variables):
    if vector_size_check (*vector_variables) == False:
        raise ArithmeticError
    return [t[0]*2-sum(t) for t in zip(*vector_variables)]

scalar_vector_product

하나의 scalar 값을 vector에 곱함, 단 입력되는 vector의 크기는 일정하지 않음

def scalar_vector_product(alpha, vector_variable):
    return [alpha*elements for elements in vector_variable]

matrix_size_check

matrix 간 덧셈 또는 뺄셈 연산을 할 때, 연산이 가능한 사이즈인지를 확인하여 가능 여부를 True 또는 False로 반환함

def matrix_size_check(*matrix_variables):
    return all(len(matrix_variables[0]) ==  len(elements) for elements in matrix_variables[1:]) and (len(set(len(m) for t in matrix_variables for m in t)) == 1)

is_matrix_equal

비교가 되는 n개의 matrix가 서로 동치인지 확인하여 True 또는 False를 반환함

def is_matrix_equal(*matrix_variables):
    return all(all([len(set(row))==1 for row in zip(*matrix)]) for matrix in zip(*matrix_variables))

matrix_addition

matrix간 덧셈을 실행하여 결과를 반환함, 단 입력되는 matrix의 갯수와 크기는 일정하지 않음
matrix_subtraction matrix간 뺄셈을 실행하여 결과를 반환함, 단 입력되는 matrix의 갯수와 크기는 일정하지 않음

def matrix_addition(*matrix_variables):
    if matrix_size_check(*matrix_variables) == False:
        raise ArithmeticError
    return [[sum(row) for row in zip(*matrix)] for matrix in zip(*matrix_variables)]

matrix_subtraction

matrix간 뺄셈을 실행하여 결과를 반환함, 단 입력되는 matrix의 갯수와 크기는 일정하지 않음

def matrix_subtraction(*matrix_variables):
    if matrix_size_check(*matrix_variables) == False:
        raise ArithmeticError
    return [[row[0]*2-sum(row) for row in zip(*matrix)] for matrix in zip(*matrix_variables)]

matrix_transpose

matrix의 역행렬을 구하여 결과를 반환함, 단 입력되는 matrix의 크기는 일정하지 않음

def matrix_transpose(matrix_variable):
    return [[element for element in row] for row in zip(*matrix_variable)]

scalar_matrix_product

나의 scalar 값을 matrix에 곱함, 단 입력되는 matrix의 크기는 일정하지 않음

def scalar_matrix_product(alpha, matrix_variable):
    return [[i*alpha for i in row] for row in matrix_variable]

is_product_availability_matrix

두 개의 matrix가 입력 되었을 경우, 두 matrix의 곱셈 연산의 가능 여부를 True 또는 False로 반환함

def is_product_availability_matrix(matrix_a, matrix_b):
    return (len(matrix_a[0]) == len(matrix_b)) and len(set(len(row) for row in matrix_a))==1 and len(set(len(row) for row in matrix_b))==1

matrix_product

곱셈 연산이 가능한 두 개의 matrix의 곱셈을 실행하여 반환함

def matrix_product(matrix_a, matrix_b):
    if is_product_availability_matrix(matrix_a, matrix_b) == False:
        raise ArithmeticError
    return [[sum(a*b for a,b in zip(row_a, columm_b)) for columm_b in zip(*matrix_b)] for row_a in matrix_a]

all 함수

  • vector 연산 가능한 리스트인지 길이 체크 시 사용

iterable 자료형 x를 입력 인수로 받으며 이 x가 모두 참이면 True, 거짓이 하나라도 있으면 False를 돌려준다.

※ 반복 가능한 자료형이란 for문으로 그 값을 출력할 수 있는 것을 의미한다. 리스트, 튜플, 문자열, 딕셔너리, 집합 등이 있다.

all([1, 2, 3]) #True
all([1, 2, 3, 0]) #False

def vector_size_check(*vector_variables):
    return all((len(variable) == vector_variables[0]) for variable in (vector_variables[1:]))

2차원 배열 출력 - Pythonic Code

matrix_x = [[1, 1], [2, 2], [3, 3]]

for m in matrix_x:
    for i in m:
    	v=v+i
        
v = [i for m in matrix_x for i in m]
[1,1,2,2,3,3]

멋진 하루를 보낸 소감문

c언어 개발자인 나에게 Pythonic Code 매우 생소한 방식이었다. 여러가지 내장함수나 one line code가 어색하였지만 코딩의 간단함에 놀랐다. 이게 된다고? 하여 의문을 가지고 하나씩 배우고 있고 더이상 생소하지 않을 정도로 연습을 많이 해야겠다. 새로운 언어를 알아가는 것은 항상 흥미롭고 재미 있는 일인 것 같다 :)

내일 할 일

  • 부스트코스 - 머신러닝을 위한 Python
    1) 과제 2
    2) Python for ML
  • Django - 장고걸스 튜토리얼 따라 하기
  • Material-UI 관련 포스트 업로드

0개의 댓글