Python &引用;属性错误:';列表';对象没有属性';拉威尔'&引用;

Python &引用;属性错误:';列表';对象没有属性';拉威尔'&引用;,python,list,numpy,Python,List,Numpy,我有一个微分方程组,需要计算雅可比矩阵。下面的代码抛出属性错误:“list”对象没有属性“ravel”。我错过了什么 import numpy as np import numdifftools as ndt def rhs(z, t=0): x,y = z xdot = (x/5 + y)*(-x**2+1) ydot = -x*(-y**2+1) return [xdot, ydot] Jfun = ndt.Jacobian(rhs) Jfun([1

我有一个微分方程组,需要计算雅可比矩阵。下面的代码抛出属性错误:“list”对象没有属性“ravel”。我错过了什么

import numpy as np
import numdifftools as ndt

def rhs(z, t=0):
    x,y = z

    xdot = (x/5 + y)*(-x**2+1)
    ydot = -x*(-y**2+1)

    return [xdot, ydot]

Jfun = ndt.Jacobian(rhs)

Jfun([1,1])
只要做:

return np.array([xdot, ydot])

相反。这应该是可行的……

放在一边:如果您使用的是Python 2,请记住要么使用来自未来的导入分部的
,要么传递浮点值,要么写入
x/5.0
。否则,您将遇到整数除法的问题(否则,您的固定代码将返回零雅可比矩阵)。由于此系统将是用户输入,因此我无法保证浮点输入,我猜从未来导入除法是正确的做法?当然。或者,您可以直接或通过创建float数据类型的
数组来调用用户输入的
float
。这两种方法都管用。奇怪。我很确定我以前试过。无论如何,它管用!非常感谢-我希望每个问题都能在一条线上解决@klim我从你的错误信息中发现了这个问题。。。由于
ravel
ndarray
对象的一种方法,因此返回数组而不是列表可能会解决问题