2016-05-02 11 views
-1

1x5:matriz1,matriz2およびという値を持つ行列を作成したいのですが、コードが機能しません。誰か助けてくれますか? Pythonでforループ内で異なる名前の行列を作成する方法

import numpy as np 

for i in range(3): 
    name= 'matriz%d'%i 
    name= np.zeros((1,5)) 

for i in range(3): 
    name2 = 'matriz%d'%i 
    for j in range(5): 
     name2[j]=i+j 

for i in range(3): 
    name3 = 'matriz%d'%i 
    print(name3) 
+1

あなたは、その後のような辞書の参照を経由して、この配列にアクセスすることができます

adict = {} for i in range(3): name= 'matriz%d'%i adict[name] = np.zeros((1,5)) 

変数名を動的に選択する必要があると思う場合、実際にはデータ構造を使用する必要があります。たぶん配列のリストか、いくつかの2D配列ではなく3D配列です。 – user2357112

+0

ありがとう、これは良い考えだと思います。 – Eduardo

答えて

1

、これらの2行は、ちょうど変数nameに2つの異なるオブジェクトを割り当てます。

name= 'matriz%d'%i  # assign a string 
name= np.zeros((1,5))  # assign an array 

その他の言語には、文字列を変数名として使用できるメカニズムがあります。 $name = ...。しかし、Pythonでは、不可能ではないにしても、扱いにくいです。代わりに、辞書などの構造を使用する必要があります。

あなたはまた、リストを使用し、数またはリストの繰り返しによって個々のアレイにアクセスすることができadict['matriz3']

:今までならば

alist = [np.zeros((1,5)) for i in range(3)] 

for i,A in enumerate(alist): # iteration with index 
    A[:] = i+np.arange(5) 
for a in alist: # simple iteration 
    print(a)