2017-11-16 5 views
2

私はすでに2つの行列を追加する関数を構築しました。今では同じ関数を再利用しようとしており、行列のリストを集計する関数を補うようになっています。Python 3で行列のリストを追加するにはどうしたらいいですか?

私は、誰もが任意の光を当てることができます

...エラーを取得し、範囲索引の外に保ちますか?

ありがとうございます!

これは私がやっていることです:

def add_matrices(a, b): 
answer = [] 
for i in range(len(a)): 
    row = [] 
    for j in range(len(a[0])): 
     row.append(a[i][j]+b[i][j]) 
    answer[i].append(row) 
return answer 


print(add_matrices([[1,2,3],[4,5,6]],[[11,12,13],[14,15,16]])) 
print(add_matrices([[1,-2],[-4,5]],[[3,2],[5,-4]])) 

def sum_matrices(mat_lst): 
answer = [] 
for i in range(1, len(mat_lst)): 
    row = [] 
    for j in range(1, len(a[0][0])): 
     row.append(a[i][j]+b[i][j]) 
    answer.append(row) 
return answer 

print(sum_matrices([[[1,-2],[-4,5]],[[3,2],[5,-4]]])) 
print(sum_matrices([[[1,2,3],[4,5,6]],[[11,12,13],[14,15,16]],[[21,22,23],[24,25,26]],[[31,32,13],[34,35,36]]])) 
+0

このコードにはいくつかの問題があります:aとbを 'for i in range(1、len(mat_lst)):'に使用しています。さらに、 'i'は行列のリストのためのものであり、' j'はある行列の列の数のためのものです。 – fernand0

答えて

0

numpyのは、あなたがすでにやろうとしているものの多くを実装しました。そして、はるかに優れたスケールになります。

マトリックスの追加例:

>>> import numpy as np 
>>> x1 = np.array([[1,2,3],[4,5,6]]) 
>>> x2 = np.array([[11,12,13],[14,15,16]]) 
>>> result = x1 + x2 
>>> result 
array([[12, 14, 16], 
     [18, 20, 22]]) 

あなたは行列のリストを合計したい場合は、それは同様に簡単です:

>>> x = [x1, x2] 
>>> sum(x) 
array([[12, 14, 16], 
     [18, 20, 22]]) 

そして、あなたは、特にPythonのネストされたリストとしてそれをしたい場合は:

>>> sum(x).tolist() 
[[12, 14, 16], [18, 20, 22]] 

これが役に立ちます。

関連する問題