2017-09-13 41 views
0

我的代碼有以下錯誤:float()參數必須是字符串或數字,而不是'list'。如何轉換浮動列表?

我知道我的ww函數是一個值列表,但我不知道如何將它轉換爲浮點數,因爲ww是一個函數。我試過列表理解,下面的問題:

TypeError: float() argument must be a string or a number, not 'list' python

但沒有奏效。

def func(n): 
    return 2/(n+1) 

def ww(n): 
    return [-1 + i*func(n) for i in range(0,n+1)] 

def g(x,y): 
    return x**2 + y 

這克(X,Y)實際上是球形的諧波,但我把這個爲了簡單起見。

def integral(n): 
    return [np.pi*func(n)*(1 + math.cos(np.pi*(-1 + i*func(n))))*g(np.pi*i,ww(n)) for i in range(0,n+1)] 
+0

你能解釋'ww'應該做什麼嗎? – Mureinik

+1

[mcve]請... –

+0

嘗試刪除方括號。 – mauve

回答

0

ww函數返回花車,隨後傳遞到g()的列表。計算失敗,因爲您無法將list添加到號碼。

如果不對數字執行某種操作(例如,將浮點列表轉換爲浮點數不可能) 「加」,「減」,「乘」。

但是,您可以將列表轉換爲可以作爲整體進行操作的numpy數組。用一個數字乘以一個數字數組,將每個數值相乘,並返回結果。

例如:

>>> a = np.array([1.0,2.0,3.0]) 
>>> b = 2 
>>> b ** 2 + a 
array([5.0, 6.0, 7.0]) 

如果包裹的ww的返回值轉換爲numpy的陣列,在g()隨後的計算應該工作。

def ww(n): 
    return np.array([-1 + i*func(n) for i in range(0,n+1)])