0
我想使用scipy.optimize.brute爲我已成功移植到python的double -> double
類型的C++函數func_cpp
。類型不匹配錯誤使用scipy.optimize.brute移植的c + +函數
由於`scipy.optimize.brute'只接受numpy數組上的函數(請參閱下面的屏幕截圖以瞭解其接口的詳細信息),如果我理解正確,我需要將我的func_cpp包裝爲一維numpy陣列。所以我用:
def: func_cpp_array (arr):
return np.array(map (func_cpp, arr.tolist())
上面的結構肯定是尷尬的(任何建議不笨笨?)。但是,它應該返回可由scipy.optimize.brute
接受的可調用函數。然而,我得到一個類型不匹配錯誤
TypeError: argument 2 to map() must support iteration
當我使用
ranges=slice(0,1,10)
scipy.optimize.brute (func_app_array, (ranges,))
任何一個可以解釋,爲什麼我得到這個類型不匹配錯誤和如何解決它?
爲方便起見,scipy.optimize.brute的接口附下面:
@ w.m.但是,如果我直接使用沒有包裝的func_cpp,交互式控制檯會給我func_cpp(numpy.ndarray) 與C++簽名不匹配:func(double)其中func_cpp是python函數,func是原始的C++函數。任何想法? – zell 2014-10-27 16:10:19
好吧,你需要恢復你的包裝fn並找到一種方法來從0-D數組中提取值。我不知道如何獲得C++函數的準確數據類型,可能是float(arr)或np.float64(arr)或arr.item()? – 2014-10-27 16:16:30