请查看以下代码。
import numpy
def f(u):
print(u) # to check dimensions of the input
return 10
u= numpy.array([[1,2],[3,4]])
scipy.optimize.minimize(f,u)
输出:
[ 1. 2. 3. 4.]
[ 1.00000001 2. 3. 4. ]
[ 1. 2.00000001 3. 4. ]
[ 1. 2. 3.00000001 4. ]
[ 1. 2. 3. 4.00000001]
[ 1. 2. 3. 4.]
Out[24]:
fun: 10
hess_inv: array([[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]])
jac: array([ 0., 0., 0., 0.])
message: 'Optimization terminated successfully.'
nfev: 6
nit: 0
njev: 1
status: 0
success: True
x: array([ 1., 2., 3., 4.])
我们可以看到,输入u
是一个二维数组u= numpy.array([[1,2],[3,4]])
。但是,它已被转换为[1. 2. 3. 4.],这是一个1d数组。我不明白为什么scipy.optimize.minimize
会这样做。当然,我总是可以在我的函数中重塑数组。但我想知道,如果我遗漏了scipy.optimize
的语法或用法。