gpt4 book ai didi

python - scipy.optimize.minimize 返回零维数组?

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:51 24 4
gpt4 key购买 nike

为一维问题调用 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]) 那样显示。)

我做错了什么?

最佳答案

那是一个 0 维数组,但它不应该是。虽然 0 维数组是 NumPy 中受支持的概念,但 minimize 调用不应创建一个。 It looks like the devs are worried about breaking backward compatibility if they fix this ,因此目前不太可能修复。

我建议使用 numpy.atleast_1d与返回一维数组的情况一致地处理这种情况,如果它们最终改变了返回值,则向前兼容:

test = minimize(...)
if not test.success:
handle_that()
result = np.atleast_1d(test.x)

对于您期望 0D 数组并想要检索存储值的情况,使用 0 索引的元组对其进行索引:

value = zero_d_array[()]

关于python - scipy.optimize.minimize 返回零维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48754823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com