为什么 scipy.optimize 将 ndarray 展平为一维数组?

use*_*128 5 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)
Run Code Online (Sandbox Code Playgroud)

输出:

[ 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.])
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,输入u是一个二维数组u= numpy.array([[1,2],[3,4]])。但是,它已转换为 [ 1. 2. 3. 4.] ,这是一个一维数组。我不明白为什么要这样做scipy.optimize.minimize。当然,我总是可以在函数中重塑数组。但我想知道,我是否遗漏了 . 的语法或用法中的某些内容scipy.optimize