使用scipy.optimize.brute遇TypeError:slice对象无len()方法的解决
解决scipy.optimize.brute的TypeError: object of type 'slice' has no len()错误
这个问题细节较为隐晦,仅在Stack Overflow某篇回答中偶然找到解决方案,直接搜索该特定错误可能无法定位到相关内容。
原代码及报错
原代码如下:
from scipy.optimize import brute f = lambda x : x ranges = ( slice(-10,10,1) ) result = brute( f, ranges, full_output=True, finish=optimize.fmin ) print( result[1] )
运行时触发错误:
TypeError: object of type 'slice' has no len()
修正方案
修正后的代码仅在定义ranges的元组中多添加一个逗号:
from scipy.optimize import brute f = lambda x : x ranges = ( slice(-10,10,1), ) result = brute( f, ranges, full_output=True, finish=optimize.fmin ) print( result[1] )
运行输出为:
-6.33825300114115e+29
额外说明
关于输出结果远小于-10的问题,可参考另一篇Stack Overflow帖子。
内容的提问来源于stack exchange,提问作者elscan
相关产品推荐
相关产品推荐

