首先,預先感謝您對我對 Python 的新手理解。我來自 MATLAB,所以希望能提供一些背景資訊。
在 MATLAB 中,我將數學函式定義為:
f =@ (x) 2*x(1)^2 4*x(2)^3
在 Python 中,我寫道:
def f(x):
return 2*x(1)**2 4*x(2)**3
但是我在另一個函式中出現錯誤(用于創建梯度向量的有限差分方法):
line 9, in f
return 2*x(1)**2 4*x(2)**3
TypeError: 'numpy.ndarray' object is not callable
(包含 n 個條目的輸入 X1 由原始方程中的變數數指定,被反饋到函式 f(x) 以在特定點進行評估)。
我很高興分享我到目前為止撰寫的代碼(或 MATLAB 中的作業代碼)以供參考,但我想知道的主要問題是如何像在 MATLAB 中使用 x 那樣為方程創建任意數量的變數(1),x(2)...x(n)。
uj5u.com熱心網友回復:
Python 中的陣列索引是用方括號完成的,而不是圓括號。請記住,Python 的索引從 0 開始,而不是 1。
def f(x):
return 2*x[0]**2 4*x[1]**3
uj5u.com熱心網友回復:
您的函式已被呼叫,f但您正在嘗試呼叫x(2). 您收到錯誤是因為您嘗試將其x作為函式呼叫,但它x是一個 numpy 陣列
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/330880.html
上一篇:Keycloak管理客戶端,不允許使用405洗掉方法
下一篇:識別R中過濾器輸入的函式?
