Python scipy.optimize.minimize返回零维数组?

Python scipy.optimize.minimize返回零维数组?,python,numpy,scipy,numpy-ndarray,Python,Numpy,Scipy,Numpy Ndarray,为一维问题调用Powell极小值就是创建一个带有不可访问值的优化结果。例如: from scipy.optimize import minimize test = minimize(lambda x: 1.0, np.array([1.0]), method="Powell") 如果我要求test.x我得到: array(3.58792896) “数组”有点问题:我无法从中获取值。例如,test.x[0]返回indexer错误:数组的索引太多。这就像是一个零维数组,或者还有其他的参考问题 (

为一维问题调用Powell极小值就是创建一个带有不可访问值的
优化结果。例如:

from scipy.optimize import minimize
test = minimize(lambda x: 1.0, np.array([1.0]), method="Powell")
如果我要求
test.x
我得到:

array(3.58792896)
“数组”有点问题:我无法从中获取值。例如,
test.x[0]
返回
indexer错误:数组的索引太多。这就像是一个零维数组,或者还有其他的参考问题

(格式良好的
ndarray
将显示像
数组([3.58792896])


我做错了什么?

这是一个0维数组,但不应该是。虽然0维数组在NumPy中是一个受支持的概念,但是
minimize
调用不应该创建一个,因此,目前不太可能找到解决办法

我建议使用以与返回1D数组的情况一致地处理此情况,并且如果它们最终更改了返回值,则应向前兼容:

test = minimize(...)
if not test.success:
    handle_that()
result = np.atleast_1d(test.x)
对于预期为0D数组并希望检索存储值的情况,请使用0索引的元组对其进行索引:

value = zero_d_array[()]

Numpy有零维数组:使用
test.x[()]
获取值。这确实是一个零维数组,但尽管Numpy完全支持零维数组,但
minimize
调用仍然不应该产生一个。这可能是一个错误。正如文档所说,结果的长度应该与输入的长度相同。除了鲍威尔
之外的所有其他方法都有这种行为。也许可以就github的问题报告一下?