0

このコードでは、行列の追加を見つけると思います。A+B

[[x + y for x,y in zip(w,v)] for w,v in zip(A,B)]

プログラムを実行してpythonシェルに書き込むとA+B[[7, 4], [5, 0], [4, 4], [2, 2], [-3, 3], [- 2、4]]

答えは実際には[[9,6],[2,3],[2,8]]

def addition (A,B)呼び出された Python 関数が 2 つの行列を入力として受け取り、結果として 2 つの入力を追加して返すようにするには、プログラムに何を統合する必要がありますか。

4

2 に答える 2

3

または、ネストされたリスト内包表記を恐れていない場合は、ワンライナーでこれを行うことができます

C = [[x + y for x,y in zip(w,v)] for w,v in zip(A,B)]
于 2013-03-27T21:52:02.520 に答える
0

行列の演算子をオーバーロードする場合+は、2 次元リストをクラスとdefメソッドにラップする必要があります__add__。例(私はあなたの追加機能を使用します):

>>> class Matrix(object):
    @staticmethod
    def addition (A, B):
        d=[]
        n=0
        while n < len(B):
            c = []
            k = 0
            while k < len (A[0]):
                c.append(A[n][k]+B[n][k])
                k=k+1
            n+=1
            d.append(c)
        return d
    def __init__(self,lst):
        self.lst=lst
    def __add__(self, other):
        return Matrix(Matrix.addition(self.lst, other.lst))
    def __repr__(self):
        return str(self.lst)


>>> A=Matrix([[7,4], [5,0], [4,4]])
>>> B=Matrix([[2,2], [-3,3], [-2, 4]])
>>> A+B
[[9, 6], [2, 3], [2, 8]]
于 2013-03-27T22:11:58.293 に答える