在Python 3中使用Python for Finance本书中的这个示例并获得此错误。我的理解是我需要使用切片才能拥有这个范围。否则我需要使用元组。
spo.brute(fo, (slice(-10, 10.1, 5)), (slice(-10, 10.1, 5)), finish=None)
TypeError: object of type 'slice' has no len()
答案 0 :(得分:2)
不是将两个切片的元组作为ranges
参数传递给scipy.optimize.brute
,而是将一个切片作为ranges
传递,将另一个切片作为args
传递。你需要提供一个元组:
scipy.optimize.brute(fo, (slice(-10, 10.1, 5), slice(-10, 10.1, 5)), finish=None)
在函数调用之外定义元组可能更清楚:
ranges = (slice(-10, 10.1, 5), slice(-10, 10.1, 5))
scipy.optimize.brute(fo, ranges, finish=None)