Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스마트컨트랙트
- 마스터링비트코인
- pythonic
- node js
- 마스터링 이더리움
- 주소
- 암호화폐
- solidity
- Redis
- 비트코인
- 백서
- 개인키
- python
- 레디스
- smart contract
- keras
- 공개키
- 마스터링 비트코인
- 파이썬
- 개발
- DAPP
- javascript
- 블록체인
- 알고리즘
- 이더리움
- 블록체인개발
- js
- 솔리디티
- Ethereum
- 문자열
Archives
- Today
- Total
개발이야기
[인프런 강의] Python lab_9 linear algebra with pythonic 본문
이번 과제는 파이썬 다운 코딩(Pythonic)을 활용하여 vector 연산과 matrix연산을 구현하는 과제였다.
Pythonic 하게 구현하는 것이 어려웠다(쉽고 간결하게 한줄로 끝내기)
1. zip 과 *(asterisk)에 활용
2. set{}은 중복제거
3. 이번 과제의 꽃은 matrix product 였던것 같다. 빼기 연산을 구현하는 것도 쉽지 않았다.
4. is_matrix_equal 함수는 one line 코딩 실패..
def vector_size_check(*vector_variables):
#Asterisk *vector_variables 은 튜플 형태 !
return len(set([len(vector) for vector in vector_variables])) == 1 # set은 중복 제거 길이가 다르면 여러 값이 나옴
def vector_addition(*vector_variables):
if not vector_size_check(*vector_variables):
raise ArithmeticError
return [sum(t) for t in zip(*vector_variables)] #Asterisk 즉 *을 붙여주면 각각의 리스트, 예를들어 *vector_variables가 A,B,C리스트로 구성되어있따면
# unpacking을 해준것 chapter 9 lab:Simple Linear algebra codes 보기
def vector_subtraction(*vector_variables):
if not vector_size_check(*vector_variables):
raise ArithmeticError
return [2 * t[0]-sum(t) for t in zip(*vector_variables)]
def scalar_vector_product(alpha, vector_variable):
return [alpha * t for t in vector_variable]
def matrix_size_check(*matrix_variables):
return len(set([len(vector) for vector in matrix_variables])) == 1
def is_matrix_equal(*matrix_variables):
result = True
for t in zip(*matrix_variables):
for row in zip(*t):
if not len(set(row)) == 1:
result = False
break
return result
def matrix_addition(*matrix_variables):
if not matrix_size_check(*matrix_variables):
raise ArithmeticError
return [[sum(row) for row in zip(*t)] for t in zip(*matrix_variables)]
def matrix_subtraction(*matrix_variables):
if not matrix_size_check(*matrix_variables):
raise ArithmeticError
return [[2 * row[0] - sum(row) for row in zip(*t)] for t in zip(*matrix_variables)]
def matrix_transpose(matrix_variable):
return [[element for element in t] for t in zip(*matrix_variable)]
def scalar_matrix_product(alpha, matrix_variable):
return [[alpha * element for element in t] for t in matrix_variable]
def is_product_availability_matrix(matrix_a, matrix_b):
return len(matrix_a) == len(matrix_b[0])
def matrix_product(matrix_a, matrix_b):
if not is_product_availability_matrix(matrix_a, matrix_b):
raise ArithmeticError
return [[sum(a * b for a,b in zip(row_a, column_b)) for column_b in zip(*matrix_b)] for row_a in matri
Comments