SciPy(Python)中的minimize函数接受什么大小的参数?
我正在阅读SciPy文档并使用Python,看看是否可以实现他们谈论的东西。然而,我似乎无法理解下面的代码中发生了什么 从 在本例中,Rosenbrock函数似乎将size-4数组作为第一个变量,将size-4数组作为第二个变量。这是因为x[1:]与x[:-1]一起使用 这最终是如何给出一个包含五个结果的数组的?当然最小化函数只运行四次,每次运行一对值(分别取自x[1:]和x[:-1]) 另外,将两个变量的值存储在两个不同的数组中不是更有意义吗 对不起,如果我错过了一些非常明显的东西,请提前感谢SciPy(Python)中的minimize函数接受什么大小的参数?,python,numpy,optimization,scipy,Python,Numpy,Optimization,Scipy,我正在阅读SciPy文档并使用Python,看看是否可以实现他们谈论的东西。然而,我似乎无法理解下面的代码中发生了什么 从 在本例中,Rosenbrock函数似乎将size-4数组作为第一个变量,将size-4数组作为第二个变量。这是因为x[1:]与x[:-1]一起使用 这最终是如何给出一个包含五个结果的数组的?当然最小化函数只运行四次,每次运行一对值(分别取自x[1:]和x[:-1]) 另外,将两个变量的值存储在两个不同的数组中不是更有意义吗 对不起,如果我错过了一些非常明显的东西,请提前感谢
V
rosen
的编写方式可以接受几乎任何长度的x
,并返回一个值,即和。像x[1:]-x[:-1]
这样的表达式只取连续项之间的差值
minimize
本身需要x0
,一个1d数组,这里有5个元素长。它改变所有元素,直到rosen
总和最小化。所以它是最小化一个向量,或一维数组。在我看来,x0
可以有不同的长度,从(2,)
SciPy实现的Rosenberg函数不是常用的函数
但似乎是最重要的
对于更高的维度。因此x[1://code>和x[:-1]
不是索引两个维度(x,y),而是以一种方便的方式实现上述功能
hpaulj回答的一个注意事项是:它不一定会像人们所能做的那样输出一个值
from scipy.optimize import rosen
points = np.array([[1, 1, 1, 1], [1, 2, 3, 4]]).T
rosen(points)
--> array([ 0., 2705.])
一次计算多个输入向量。您所说的“第一个变量”和“第二个变量”是什么意思?只有一个参数被传递给rosen
。它如何处理这一论点是它自己的事。
from scipy.optimize import rosen
points = np.array([[1, 1, 1, 1], [1, 2, 3, 4]]).T
rosen(points)
--> array([ 0., 2705.])