【发布时间】:2018-07-23 02:46:45
【问题描述】:
为单维问题调用 Powell 最小化器会创建一个具有不可访问值的 OptimizeResult。例如:
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] 返回IndexError: too many indices for array。就好像它是一个零维数组,或者有一些其他的引用问题。
(格式良好的ndarray 会显示为array([3.58792896])。)
我做错了什么?
【问题讨论】:
-
Numpy 有零维数组:stackoverflow.com/questions/773030/…
-
使用
test.x[()]获取值。 -
这确实是一个零维数组,但是虽然 NumPy 完全支持零维数组,但
minimize调用仍然不应该是一个。 -
这可能是一个错误。正如文档所说,结果应该与输入具有相同的长度。除了
Powell之外的所有其他方法都有这种行为。也许在 github 问题上报告这个?
标签: python numpy scipy numpy-ndarray