Python 对二维匿名函数数组变量使用scipy.optimize.fsolve时I/O形状不匹配
以下是源代码:Python 对二维匿名函数数组变量使用scipy.optimize.fsolve时I/O形状不匹配,python,scipy,Python,Scipy,以下是源代码: def lambdatest(): F=lambda y: y-np.array([[1,2],[3,4]]) y0=np.array([[3,4],[8,7]]) Y=scipy.optimize.fsolve(F,y0) return Y 我得到的错误是: raise TypeError(msg) TypeError: fsolve: there is a mismatch between the input and outp
def lambdatest():
F=lambda y: y-np.array([[1,2],[3,4]])
y0=np.array([[3,4],[8,7]])
Y=scipy.optimize.fsolve(F,y0)
return Y
我得到的错误是:
raise TypeError(msg)
TypeError: fsolve: there is a mismatch between the input and output shape of the 'func' argument '<lambda>'.
raisetypeerror(msg)
TypeError:fsolve:“func”参数“”的输入和输出形状不匹配。
我环顾了一下四周,但似乎没有什么意义 F
(的func
参数)必须返回标量或一维数组fsolve
不处理高维数组
您可以使用该方法将二维阵列展平为一维阵列,然后将fsolve
返回的解决方案重塑为二维阵列:
def lambdatest():
F = lambda y: y - np.array([[1,2],[3,4]]).ravel()
y0 = np.array([[3,4],[8,7]])
Y = scipy.optimize.fsolve(F, y0.ravel()).reshape(y0.shape)
return Y
结果如下:
>>> lambdatest()
array([[ 1., 2.],
[ 3., 4.]])
在回答之前,我应该记得这句话:非常好用,非常感谢。很抱歉,这是一个重复的问题,我搜索过,但没有找到那个特定的职位。