为什么scipy.optimize将ndarray压平为1-d阵列?

时间:2016-09-20 09:33:52

标签: 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  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的语法或用法。

0 个答案:

没有答案