2017-09-28 79 views
0

我試圖計算函數f_integ的一個值,它是函數f從0到x_v的集成結果。IndexError:元組索引超出範圍,嘗試集成函數時出錯

f = lambda x : x + 1 

    def f_integ(x_array): 
     int_result = np.zeros_like(x_array) 
     indexes = np.shape(x_array)[0] 
     for ind in range(indexes): 
      x_v = x_array[ind] 
      int_result[ind] = integ.quad(f, 0.0, x_v)[0] 
     return int_result 

    C = f_integ(1) 
    print "C", C 

當我運行它,我得到以下錯誤:

Traceback (most recent call last): 
    File "untitled.py", line 117, in <module> 
    C = f_integ(1) 
    File "scr1.py", line 110, in f_integ 
    indexes = np.shape(x_array)[0] 
IndexError: tuple index out of range 

我知道quad()返回一個元組,但我無法弄清楚如何把一個數作爲結果的爭論的整合。我是Python新手,請幫忙。

+0

發佈完整的錯誤消息,包括堆棧跟蹤和[mcve]。 –

回答

1

這樣調用該函數:

C = f_integ(np.array([1])) 
print "C", C 

目前要傳遞一個數字f_integ(),而不是一個數組。當它遇到np.shape(x_array)[0]時,數字的形狀只是(),所以它不能在索引0處爲空元組返回任何內容。

+0

好的。但是它的形狀很好,但是這個形狀是一個空的元組,它會拋出一個IndexError與你嘗試索引它的任何東西。 –

+0

啊,是的,這是正確的。我會編輯我的答案。 – Antimony

+0

現在工作!非常感謝你。 – ani87