【问题标题】:"AttributeError: 'list' object has no attribute 'ravel'"“AttributeError:‘list’对象没有属性‘ravel’”
【发布时间】:2014-04-15 05:58:48
【问题描述】:

我有一个微分方程系统,需要计算雅可比行列式。下面的代码抛出AttributeError: 'list' object has no attribute '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])

【问题讨论】:

  • 旁白:如果您使用的是 Python 2,请记住使用 from __future__ import division、传递浮点数或编写 x/5.0。否则你会遇到整数除法的问题(否则你的固定代码会返回零雅可比矩阵。)
  • 因为这个系统将是一个用户输入,因此我不能保证浮动输入,我猜from __future__ import division是正确的做法吗?
  • 当然。或者您可以直接在用户输入上调用float,或者通过创建float dtype 的array。两者都行。

标签: python list numpy


【解决方案1】:

只要做:

return np.array([xdot, ydot])

相反。这应该工作......

【讨论】:

  • 奇怪..我很确定我之前尝试过..无论如何,它奏效了!非常感谢 - 我希望每一个问题都能在一条线上解决!
  • @klim 我发现这是基于您的错误消息的问题......因为ravelndarray 对象的方法,很可能返回数组而不是列表可以解决问题
猜你喜欢
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2014-09-08
  • 2016-01-30
  • 2020-12-15
  • 2016-04-15
相关资源
最近更新 更多