Operasi matriks di Python dapat dilakukan dengan berbantuan berbagai paket, misalnya saja adalan NumPy [1]. Di sini akan disajikan paket buatan sendiri tentang matriks yang dapat untuk menjumlahkan dan mengurangkan dua buah matriks, perkalian matriks dengan matriks, perkalian matriks dengan skalar, dan transpos suatu matriks. Digunakan hanya list Python dan pengulangan for.
Selain NumPy, terdapat sekitar 260 paket Python terkait dengan matriks (Matrix) yang telah disaring dengan topik Scientific/Engineering lalu Mathematics [2].
Gambar 1. Hasil teratas pencarian paket Python dengan katan kunci ‘matrix’ dan diberi filter ‘Scientific/Engineering lalu Mathematics’ di PyPI.
Selain itu dapat pula dicari di GitHub untuk itu seperti diberikan pada gambar berikut ini, sekitar 23 repositori [3].
Gambar 2. Hasil tiga teratas pencarian paket Python dengan katan kunci ‘matrices python mathematics’ di GitHub.
Demikianlah sekilas adanya paket-paket terkait matriks yang tersedia sebagaimana hasil pencariannya telah ditampikan pada Gambar 1 dan 2. Hasil pencarian sebenarnya akan lebih banyak dari 260 + 23 tersebut.
Paket matrix
buatan sendiri adalah sebagai berikut ini.
# matrix.py
# Sparisoma Viridi | https://github.com/dudung
# Simple matrix library using list
# 20220216 Create this example.
# 20220217 Add transpose.
# print only two-dimension matrix in form of a list
def printmat(m):
# assume that all rows have the same columns
row = len(m)
col = len(m[0])
# iterate through rows then colums
for r in range(row):
for c in range(col):
print(m[r][c], end='\t')
print()
# create an new two-dimension matrix in form of a list filled with zero
def newmat(row, col):
# create empty matrix
m = []
# iterate through rows then colums
for r in range(row):
newrow = []
for c in range(col):
newrow.append(0)
m.append(newrow)
return m
# add two two-dimension matrices in form of a list
def addmat(m1, m2):
# assume both matrices have the same dimension
row = len(m1)
col = len(m1[0])
# create empty matrix
m3 = []
# iterate through rows then colums
for r in range(row):
newrow = []
for c in range(col):
newcol = m1[r][c] + m2[r][c]
newrow.append(newcol)
m3.append(newrow)
return m3
# substract two two-dimension matrices in form of a list
def submat(m1, m2):
# assume both matrices have the same dimension
row = len(m1)
col = len(m1[0])
# create empty matrix
m3 = []
# iterate through rows then colums
for r in range(row):
newrow = []
for c in range(col):
newcol = m1[r][c] - m2[r][c]
newrow.append(newcol)
m3.append(newrow)
return m3
# multiply a matrix with a scalar
def mulmat1(m, a):
# assume all rows have the same number of columns
row = len(m)
col = len(m[0])
m2 = newmat(row, col)
# iterate through rows then colums
for r in range(row):
for c in range(col):
m2[r][c] = m[r][c] * a
return m2
# multiply a matrix with a matrix
def mulmat2(m1, m2):
# assume colum of 1st and row of 2nd are matched
row = len(m1)
mid = len(m1[0])
col = len(m2[0])
m3 = newmat(row, col)
# iterate through rows then colums
for r in range(row):
for c in range(col):
temp = 0
for m in range(mid):
temp = temp + m1[r][m] * m2[m][c]
m3[r][c] = temp
return m3
# transpose a matrix
def tmat(m):
row = len(m)
col = len(m[0])
mT = mat.newmat(col, row)
for r in range(row):
for c in range(col):
mT[c][r] = m[r][c]
return mT
yang bila diletakkan pada folder yang sama dengan suatu berkas Python lainnya, dapat dipanggil melalui berkas tersebut. Baris berikut
import matrix as mat
perlu diletakkan dalam berkas pemanggilnya. Bila paket tersebut dijalankan, akan diperoleh
==== RESTART: matrix.py ====
sebagai hasilnya, yang menunjukkan setidaknya tidak terdapat kesalahan penulisan baris-baris kodenya, akan tetapi belum dijalankan.
import matrix as mat
m = mat.newmat(1, 4)
mat.printmat(m)
— Sparisoma Viridi (@6unpnp) February 17, 2022