使用 scipy brute 时出错:“slice”类型的对象没有 len()

问题描述 投票:0回答:1

我发布这个问题答案是因为这个细节很微妙,我只是偶然发现了解决方案,因为有人在a 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()

新代码仅在定义范围的元组中多包含一个逗号

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 帖子中得到了回答。

slice scipy-optimize
1个回答
0
投票

如问题中所述,工作代码需要在 slice(-10,10,1) 后添加逗号。

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] )
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.