python - 不懂 scipy.optimize.brute 语法
问题描述
我根本不明白的语法scipy.optimize.brute
。如果我有一个列表,比如说[-1, 0, 1]
,和一个单变量函数x**2
,我如何让它最小化该列表?我已经阅读了文档,但我不知道该传递什么。元组不起作用,列表也不起作用,而且我不知道“切片对象”是什么,也不知道为什么要为此传递两个切片对象。
MWE:
import scipy.optimize as spopt
def f(x):
return x**2
print(spopt.brute(f, ([-1, 0, 1])))
给我TypeError: object of type 'int' has no len()
解决方案
scipy.optimize.brute
在给定范围内最小化函数。
该错误取决于您传递ranges
参数的方式。如文档中所述:
范围元组的每个组件必须是“切片对象”或形式为(低,高)的范围元组。
这里举个例子。
>>> res = spopt.brute(func=f, ranges=(slice(-1,2,1),), full_output=True)
>>> res
(array([ 0.]), 0.0, array([-1, 0, 1]), array([1, 0, 1]))
>>> res[0]
array([ 0.]) # global minimum
>>> res[1]
0.0 # function value at global minimum
推荐阅读
- c# - Excel CSV 编码问题
- java - 使用itext时是否可以根据页面内容添加脚注?
- mysql - 从第三个表中过滤 MySQL 复杂选择查询
- amazon-web-services - 如何从 aws lambda 函数连接到 oracle db
- c# - 在 C# 中显示 ASCII 艺术字母时的问题
- php - 如果值相同,我想合并数组
- .net - 如何在 DotNet MVC 中实现分页
- jenkins-pipeline - 如何在批处理命令中使用 Jenkins 管道中的选择参数
- android - Fabric 插件 1.26.0 不兼容
- javascript - 将事件监听器添加到 Polymer 1 中 Light DOM 上的多个元素