Vector representation of python
- Vector를 파이썬으로 표현하는 다양한 방법 존재
vector_a = [1, 2, 10] # List로 표현했을 경우
vector_b = (1, 2, 10) # Tuple로 표현했을 경우
vector_c = {'x':1, 'y':2, 'z':10} # dict로 표현했을 경우
- 최선의 방법은 없고, 값의 변경 유무, 속성값 유무에 따라 선택가능
1. Vector 덧셈
Ex 1) 파이썬 답지 못한 벡터 표현 (X)
u = [2, 2]
v = [2, 3]
z = [3, 5]
result = []
for i in range(len(u)):
result.append(u[i] + v[i] + z[i])
print(result)
Ex 2) zip을 사용하여 Ex 1) 표현
u = [2, 2]
v = [2, 3]
z = [3, 5]
result = [sum(i) for i in zip(u,v,z)]
print(result)
[7, 10]
2. Vector 곱셈
Ex) Scalar-Vector Product
u = [1, 2, 3]
v = [4, 5, 6]
a = 5
result = [a * sum(z) for z in zip(u,v)]
print(result)
[25, 35, 45]
Matrix representation of python
- Matrix도 파이썬으로 표현하는 다양한 방법 존재
matrix_a = [[3, 6], [4, 5]] # List로 표현했을 경우
matirx_b = [(3, 6), (4, 5)] # Tuple로 표현했을 경우
matrix_c = {(0, 0):3, (0, 1):6, (1, 0):4, (1, 1):5} # dict로 표현했을 경우
- dict 로 표현할 때는 무궁무진한 방법이 있음
- 기본적으로 2-Dimensional List 형태로 표현함
- [[1번째 row], [2번째 row], [3번째 row]]
1. Matrix 덧셈
Ex) List comprehension 사용
matrix_a = [[3, 6], [4, 5]]
matrix_b = [[5, 8], [6, 7]]
result = [[sum(row) for row in zip(*t)] for t in zip(matrix_a, matrix_b)]
print(result)
[[8,14], [10, 12]]
2. Matrix 곱셈(Scalar)
Ex) Scalar-Matrix Product
matrix_a = [[3,6], [4,5]]
alpha = 4
result = [[alpha * element for element in t] for t in matrix_a]
print(result)
[[12, 24], [16, 20]]
3. Matrix Transpose
Ex) List comprehension + zip
matrix_a = [[1, 2, 3], [4, 5, 6]]
result = [[row for row in t] for t in zip(*matrix_a)]
print(result)
4. Matrix Product
Ex) matrix_b에서 zip(*matrix_b)을 사용하여 column_b을 만들어줌
matrix_a = [[1, 2, 3], [4, 5, 6]]
matrix_b = [[1, 4], [2, 5], [3, 6]]
result = [[a * b for a, b in zip(row_a, column_b) for column_b in zip(*matrix_b)] for row_a in matrix_a]
print(result)
'✍🏻Language & FrameWork > Python' 카테고리의 다른 글
[Python for ML] Linear Algebra Codes - 2 (2) | 2024.01.04 |
---|---|
[Python for ML] News Categorization (0) | 2024.01.02 |
[Python for ML] Asterisk (0) | 2024.01.02 |
[Python for ML] Reduce 함수 (0) | 2024.01.01 |
[Python for ML] Map 함수 (0) | 2024.01.01 |