Python 为什么scipy.optimize会将数据阵列展平为一维阵列?
请看下面的代码Python 为什么scipy.optimize会将数据阵列展平为一维阵列?,python,arrays,numpy,scipy,Python,Arrays,Numpy,Scipy,请看下面的代码 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
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
是一个2d数组u=numpy.array([[1,2],[3,4]])
。但是,它已转换为[1.2.3.4],这是一个1d数组。我不明白为什么scipy.optimize.minimize
会这样做。当然,我总是可以在函数中重塑数组。但是我想知道,如果我在scipy.optimize
的语法或用法中遗漏了什么,你找到这个问题的解决方案了吗?没有。我通过在目标函数中重塑数组来解决问题。好吧,问题是每个约束也会变平结构,重塑是一个很大的难题