2011-05-20 67 views
1

我想創建一個能夠在矩陣之間進行所有可能計算的類。輸入是一個矩陣(大小無關緊要),在該矩陣上,該類應該進行任何計算 - 無論是乘法,合併還是減法。不同的功能如下: 我需要在這個類:如何在python中創建矩陣計算類之間的?

__init__(self, data) 

get_width(self) 

get_height(self) 

add(self, m) 

scalar_multiply(self, a) 

subtract(self, m) 

multiply(self, m) 

compare(self, m) 

非常感謝,也需要與簡單的動作。
這是我的代碼至今:

class Matrix: 
    def __init__(self, data): 
     self.data = data 

    def get_width(self): 
     return len(self.data[0]) 

    def get_height(self): 
     return len(self.data) 

    def add(self, m): 
     lines = [] 
     for j in range(len(self.data)): 
      line = [] 
      for i in range(len(self.data[j])): 
       line.append(self.data[j][i] + m[j][i]) 
      lines.append(line) 
     return lines 

    def scalar_multiply(self, a): 
     res = [] 
     for j in range(len(self.data)): 
      line = [] 
      for i in range(len(self.data)): 
       line.append(self.data[j][i]*a) 
      res.append(line) 
     return res 

    def subtract(self, m): 
     lines = [] 
     for j in range(len(self.data)): 
      line = [] 
      for i in range(len(self.data)): 
       line.append(self.data[j][i] - m[j][i]) 
      lines.append(line) 
     return lines 

    def multiply(self, m): 
     lines = [] 
     for j in range(len(self.data-1)): 
      line = [] 
      for i in range(len(m[0])-1): 
       schum = 0 
       for k in range(len(self.data[0]-1)): 
        schum = self.data[j][k]*m[k][i] 
       line.append(schum) 
      lines.append(line) 
     return lines 

    def compare(self, m): 
     for j in range(len(self.data)): 
      for i in range(len(self.data)[j]): 
       while self.data[j][i] == m[j][i]: 
        return True 
       else: 
        return False 
+0

中已經有一個很好的實現。你能提供你的代碼和你卡在哪裏嗎? – Jacob 2011-05-20 12:10:37

+0

看起來像一個好的開始,那麼究竟是什麼問題? – martineau 2011-05-20 17:23:07

+0

我猜測,但它看起來像你的幾個方法應該返回一個新的矩陣,而不是一個列表,或者可能在'self.data'就地修改矩陣。 – martineau 2011-05-20 17:28:56

回答

4

你需要創建這個自己?如果沒有,那麼在numpy

+0

抱歉,沒有得到上面的評論...我想這是你矩陣類的定義,而不是更新你的問題;評論字段通常是一個糟糕的地方放置代碼 – 2011-05-20 12:26:51

+0

現在看看我的代碼:) – barbie 2011-05-20 15:11:13