最小化以numpy数组为参数的Python函数
我刚接触Python,遇到了一个问题:我想要最小化一个Python函数,这个函数的一个参数是一个numpy数组。当我使用scipy.optimize.fmin时,它把我的数组变成了一个列表(这导致函数无法正常计算)。有没有什么优化函数可以接受numpy数组作为参数呢?
提前谢谢大家!
-MB
补充:这里有一个我所说的例子,感谢@EOL:
import scipy.optimize as optimize
import numpy as np
def rosen(x):
print x
x=x[0]
"""The Rosenbrock function"""
return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)
x0 = np.array([[1.3, 0.7, 0.8, 1.9, 1.2]])
xopt = optimize.fmin(rosen, x0, xtol=1e-8, disp=True)
#[ 1.3 0.7 0.8 1.9 1.2]
#(note that this used to be a numpy array of length 0,
#now it's "lost" a set of brackets")
1 个回答
4
这里有一个使用 optimize.fmin
的例子,这个函数来自于 scipy 教程:
import scipy.optimize as optimize
def rosen(x):
"""The Rosenbrock function"""
return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)
x0 = [1.3, 0.7, 0.8, 1.9, 1.2]
xopt = optimize.fmin(rosen, x0, xtol=1e-8, disp=True)
# Optimization terminated successfully.
# Current function value: 0.000000
# Iterations: 339
# Function evaluations: 571
print(xopt)
# [ 1. 1. 1. 1. 1.]
这样有帮助吗?如果没有,能不能修改这个例子,看看是什么变成了列表?