2012-02-09 15 views
1

私は、「エネルギー」という配列のすべての要素(e0)に対して実行したい方程式を持っています。しかし、それぞれの計算では、定義された範囲内の値のセット(i)をループする必要があります。 1つのループを他のループの内側に配置しようとすると、空の配列が返されますが、配列はエネルギー配列と同じサイズになります。戻って空の配列

fp1 = [] 
for e0 in energy: 
    for i in range(elow, ehigh, stepsize): 
     fp1 = np.append(fp1, np.cumsum((2/np.pi) * ((mu(element, e0) * i/((e0 * e0)-)(i * i)))) * 2) 

これは比較的新しいものなので、私は何かを完全に見落としています。 これにPython 2.7を使用しています。

乾杯

+0

の出力が得られるので、あなたが達成したいことをよりよく説明しようとするかもしれません。 、 刻み幅 ?これは、elow> = eghighの場合にのみ[]リストを生成します。 – Bogdan

+0

elo = 0、ehi = 900、stepsize = 2 – user1171835

+0

ここでNumpyを使用していることを確認できますか? appendはnumpy配列の配列を返すので、Pythonリストの場合はNoneを返します。 –

答えて

0

よく空のリストが発生しない状況。しかし、あなたのコメントであなたが言ったことが真実ならば、あなたは何を期待するべきでしょうか。例:

elow = 2 
ehigh = 900 
stepsize = 2 
fp1 = [] 
energy = [1, 2, 3] 
for e0 in energy: 
    for i in range(elow, ehigh, stepsize): 
      fp1 = numpy.append(fp1, 15) 

fp1 
array([ 15., 15., 15., ..., 15., 15., 15.]) 
len(fp1) 
1347 

同じように、エネルギーの長さは同じになりません。これは、range(2, 900, 2)が2 - > 898(449要素)から始まるリストを生成したためです。これはエネルギーの各要素ごとに生成され、計算の結果はfp1に追加され、結果として449 * 3 = 1347要素が得られるはずです。

私は本当に以外のあなたは結果として空のリストを取得する任意の状況を見ることができない。

elow >= ehigh 

energy = [] 

stepsize < 0 

だから私のアドバイスは、右ループする前にすべてのこれらの値の印刷/デバッグを行うことであろう私が言ったように、たとえこれがうまくいくとしても、同じ長さの出力を得るのではなく、むしろlength = len(energy) * 449length = len(energy) * 449