2012-02-09 74 views
1

我有一個方程式,我想要爲每個元素(e0)執行一個名爲'energy'的數組。然而,每個計算都需要循環定義範圍內的一組值(i)。當我嘗試將一個循環放入另一個循環時,它將返回一個空數組,而我想要一個與能量數組大小相同的數組。返回和空陣列

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,ehigh , 一步的大小 ?如果elow> = eghigh,這隻會生成一個[]列表。 – Bogdan 2012-02-09 15:34:53

+0

elo = 0,ehi = 900,stepsize = 2 – user1171835 2012-02-09 15:38:46

+0

你能證實你在這裏使用Numpy嗎?由於append爲numpy數組返回一個數組,Python爲Python列表返回None。 – 2012-02-09 15:56:48

回答

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 

所以我的建議是在循環之前有權做所有這些值的打印/調試,也許試圖更好地解釋你想達到什麼,因爲就像我說的,即使這會起作用,你將不會得到與energy相同長度的輸出,而是length = len(energy) * 449