2016-02-23 25 views
0

我正在使用Python將函數的參數列爲列表(作爲解決微分方程的程序的一部分)。首先,我的自變量存儲在列表x_array = [xi],其中xi是初始值。然後我在while循環中使用這個數組,其中行x + = dxx_array.append(x)允許我根據需要填充此數組。Python:我如何使用列表作爲具有常量係數的參數?

我遇到的問題是當我嘗試繪製分析函數時。

具體而言,該行不起作用:

plt.plot(x_array, 10*np.cos(3*x_array), label = "Analytical Solution") 

,但此行的工作:

plt.plot(x_array, 10*np.cos(x_array), label = "Analytical Solution") 

這裏唯一的不同是恆標合作效率的3 COS內(3 * x_array)參數。

這是我得到的錯誤消息:ValueError:x和y必須具有相同的第一維。所需的庫numpy和matplotlib已經導入,所以沒有問題。

什麼是正確的語法,可以讓我用常量內部的參數繪製函數,同時仍然使用列表?

+1

請記住,在Python中,你可以* *由標量乘的列表。結果是一個**更長的列表**:'x = [1]; y = 3 * x;打印y'得到[1,1,1]。 –

+0

我該如何寫這樣的,而不是複製x三次,而是讓列表中的每個元素乘以3? – Ferreroire

回答

0

x_array實際上不是數組,但一python列表。

所以這裏發生了什麼:

x_array = [1,2,3] #as an example 
x_array*3 = [1,2,3,1,2,3,1,2,3] # that's what *3 after a list does 

相反,如果轉換x_array爲numpy的陣列,如預期的乘法會工作。

x_array = np.array(x_array) # array([1,2,3]) 
x_array = x_array *3 # array([3,6,9]) 
+0

太棒了!這樣可行! – Ferreroire

0

嘗試列表轉換爲numpy array使用np.array(x_array)

或者,使用列表理解:[3 * i for i in x_array]

plt.plot(x_array, 10*np.cos(3*np.array(x_array)), label = "Analytical Solution") 

plt.plot(x_array, 10*np.cos([3 * i for i in x_array]), label = "Analytical Solution") 
相關問題