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.]])

在回答之前,我应该记得这句话:非常好用,非常感谢。很抱歉,这是一个重复的问题,我搜索过,但没有找到那个特定的职位。