Python'da Matris Çarpımı

Arkadaşlar merhaba kütüphane kullanmadan traspoze kullanarak aşağıdaki formül gibi nasıl çarpma işlemi yapabilirim
𝐴 ∗ 𝐵^T

A Matrisin Satır sayısı: 2
A Matrisin Sütün sayısı: 2

B Matrisin Satır sayısı: 2
B Matrisin Sütün sayısı: 2

A Matirsin değerleri: 9, 8, 7, 6
B Matirsin değerleri: 5, 4, 3, 2
B Matrisin Transpozu: [[5, 3], [4,2]]

1 Beğeni

Matrislerin boylari sabitse “i = a×e + c×g; j = a×f + c×h” gibi element bazli formulleri dogrudan uygulayabilirsin:

>>> [[a,b],[c,d]] = [[1,2],[3,4]]
>>> [b*d]
[8]

Degilse dongu kullanmayi ve liste manipule etmeyi (kullanmayi; degistirmeyi) ogrenmen lazim.

1 Beğeni

Uzun bir beyin fırtınasından sonra işe yarayacak(ını düşündüğüm) bir şeyler kodlayabildim.

class Matrix:
    def __init__(self):
        self.matrix = []

    def add(self, list):
        self.matrix.append(list)

    def get_matrix(self):
        return self.matrix

    def transpoze(self):
        local_matrix = []
        row_count = len(self.matrix)
        column_count = len(self.matrix[0])  # IndexError alınmayacak herhangi bir sayı ile hesaplanabilir.
        for a in range(row_count):
            local_matrix.append([])
            for b in range(column_count):
                local_matrix[a].append(self.matrix[b][a])

        return local_matrix

    def multiplication(self, second_matrix):
        local_matrix1 = []
        local_matrix2 = []
        row_count = len(self.matrix)
        column_count = len(self.matrix[0])  # IndexError alınmayacak herhangi bir sayı ile hesaplanabilir.
        for a in range(row_count):
            for b in range(column_count):
                local_matrix1.append([])
                for c in range(row_count):
                    local_matrix1[len(local_matrix1) - 1].append(self.matrix[a][b] * second_matrix[b][c])

        column_count2 = len(local_matrix1)
        n = 0
        for d in range(0, column_count2, 2):
            local_matrix2.append([])
            for e in range(row_count):
                local_matrix2[n].append(local_matrix1[d][e] + local_matrix1[d + 1][e])
            n += 1

        return local_matrix2


A = Matrix()
A.add([9, 8])
A.add([7, 6])
print(A.get_matrix())

B = Matrix()
B.add([5, 4])
B.add([3, 2])
print(B.get_matrix())

B = B.transpoze()
print(B)

C = A.multiplication(B)
print(C)