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

的语法或用法中遗漏了什么,你找到这个问题的解决方案了吗?没有。我通过在目标函数中重塑数组来解决问题。好吧,问题是每个约束也会变平结构,重塑是一个很大的难题