2017-11-01 16 views
0

5つの異なる行列を反復して結果の行列を生成したいのですが、最初にすべての行列の最初の値をとり、これらの値の平均をとって結果を最初の値結果の行列。誰もがnumpyライブラリを使用して、Pythonでこれを行う方法を伝えることができますか?numpyを使ってPythonで行列を反復する

+1

すべての行列の形状は同じですか?彼らはいくつかの容器に入っていますか?あなたは[mcve]を提供できますか? –

答えて

0

一般的には、Pythonベースのループを回避し、numpyに(より速く)Cベースのループをさせたい(または全くループしない)ようにします。

ほとんどの人は、明示的なループを(numpy-)ベクトル化として呼び出すアプローチをとっています。これは、パフォーマンスのためには非常に重要です。

次の例では、サイズが(3,3)の5つのnumpy配列を作成します(この行列タイプも存在しませんが、ここでは使用されず、大部分のnumpyユーザーは配列の代わりに配列を使用する必要があります)同じ形状のすべての平均値を含む行列(行列 - セル上の要素ごとの平均; 2次元配列を行列と解釈する)。

コード:

import numpy as np 

a, b, c, d, e = [np.random.randint(0, 5, size=(3,3)) for i in range(5)] 

all = np.stack((a, b, c, d, e), axis=0) 
print(all.shape) 

x = np.mean(all, axis=0) 

print(a) 
print(b) 
print(c) 
print(d) 
print(e) 

print(x) 

アウト:

2の配列を与えられた
for row in range(array.shape[0]): 
    for col in range(array.shape[1]): 
     cell_value = array[row, col] 
     ... 

(5, 3, 3) 
[[0 0 0] 
[0 1 0] 
[2 4 0]] 
[[4 2 0] 
[3 3 4] 
[0 4 0]] 
[[3 4 0] 
[2 2 1] 
[0 0 4]] 
[[3 1 2] 
[4 3 4] 
[2 0 3]] 
[[3 4 2] 
[3 1 0] 
[1 0 0]] 
[[ 2.6 2.2 0.8] 
[ 2.4 2. 1.8] 
[ 1. 1.6 1.4]] 

あなたはまだループしたい場合は、同じように、ネストされたループを使用することができます寸法。

+0

これは完璧な答えです! – Esha

関連する問題