2013-02-16 117 views
0

該方案旨在根據產生的電阻值:Python的數組索引for循環

enter image description here

(鑑於電阻和溫度的陣列)。

爲了獲得電阻的當前值,該公式需要陣列的初始電阻和初始溫度值(R_0,T_0)。它還需要來自陣列的溫度(T)的連續值。

我嘗試:

r_model=[] 
for r in r_values: 
    result = r*(1+2.9*(t_values[r+1]-t_values[r])) 
    fit2.append(result) 
r_model = array(r_model) 

我的錯誤:

index out of bounds 
+0

你爲什麼要循環使用你正在計算的r_values而不是已知的t_values? – Floris 2013-02-16 16:33:25

回答

0

您有:

r_values = arange(1500,2500,0.0001) #R_0 values 
for r in r_values: 
# . . . 
    t_values[r+1] 

所以在第一時間通過你風與循環:

t_values[1501] 

但t_values只有3個元素。

+0

是的,對不起,陣列是我寫得很快的東西。我實際上從具有相同維度的元素的.txt文件中獲取數組。感謝您的注意! – 8765674 2013-02-16 16:23:28

+0

無關緊要,它們是相同的維度 - 您正在索引值,而不是索引。 – Floris 2013-02-16 16:26:18

+0

無論如何,如果_were_具有相同的維數,由於[[r + 1]'索引...仍然會出現問題... T數組必須大於r數組。 – Floris 2013-02-16 16:27:43

0

您正在索引t的值爲r而不是索引。 for ri, r in r_values我相信,是語法 - 然後使用ri索引也t_values

Accessing the index in Python 'for' loops

在你的代碼的另一個問題:關於與T0差異的方程會談,但你走差異t_values[r+1]-t_values[r]。應該是t_values[ri]-t_values[0]

1

如果您需要數組的索引,而處理for循環,您可以使用enumerate

r_model=[] 
for (index, r) in enumerate(r_values): 
    result = r*(1+2.9*(t_values[index+1]-t_values[index])) 
    fit2.append(result) 
r_model = array(r_model) 

如果r_values[1500,2500,0.0001],則enumerate(r_values)將通過這個序列重複:

(0, 1500) 
(1,2500) 
(2,0.0001) 

而在每一步,您都可以使用索引(0,1和2)從t_values列表中獲取適當的值。