【发布时间】:2015-05-03 21:55:56
【问题描述】:
为什么下面的代码会返回 ValueError?
from scipy.optimize import fsolve
import numpy as np
def f(p,a=0):
x,y = p
return (np.dot(x,y)-a,np.outer(x,y)-np.ones((3,3)),x+y-np.array([1,2,3]))
x,y = fsolve(f,(np.ones(3),np.ones(3)),9)
ValueError: setting an array element with a sequence.
【问题讨论】:
-
函数本身没有任何问题,我就是不明白为什么fsolve不起作用。
-
函数中的参数
p和初始猜测必须是单个数组,而不是两个数组的元组 -
当我在我的盒子上尝试时,您发布的代码并没有因该错误而失败(尽管它确实失败了!)。能否指定 python 版本、numpy 和 scipy 版本以及完整的错误堆栈跟踪?
-
我认为您可能遇到与this question 相同的问题 - 即您认为您正在传递两个列表的元组 (@987654325 @) 到您的功能,但它们正在“在幕后”被解包