2016-11-09 2 views
0

У меня есть класс Matrix (object) с определениями get_row и get_column. Как я могу сделать с ними матричное умножение?матричное умножение с get _row get_column - python

def get_row(self,r): 
    get_row = self._m[r] 
    return get_row 


def get_column(self,c): 
    get_column=[] 
    for row in self._m: 
     get_column.append(row[c]) 
    return get_column 

м2 = Матрица (2, [[1,2], [3,4]]) м3 = Матрица (2, [[5,6], [7,8]])

дс = m2.get_column (1) ----> [2,4] гр = m2.get_row (1) ----> [3,4]

Следующий код работает, но у меня чтобы сделать это с помощью get_row и get_column

nollmatris=[[0 for r in range(self._size)] for c in range(self._size)] 
 
    for i in range(len(self._m)):   
 
    for j in range(len(other._m[0])): 
 
     for k in range(len(other._m)): 
 
      nollmatris[i][j] += self._m[i][k] * other._m[k][j] 
 
for svar in nollmatris: 
 
    print(svar)

ответ

0

Я предполагаю, что это домашнее задание, так как если это не домашнее задание, то ответ «получите numpy».

Если это невозможно, сделайте все возможное, чтобы использовать zip() как итератор в цикле for.

0

просто применить формальное определение произведения матриц:

m1, m2 definition 
product = [[0 for j in range(len(m2.get_row(0)))] for i in range(len(m1.get_column(0)))] 
for i in range(len(product)) : 
    for j in range(len(product[0])) : 
     for k in range(len(m1.get_row(0))) : 
      product[i][j] += m1[i][k]*m2[k][j] 

Очень базовый подход, а не оптимизированный вообще, но это работает.