【问题标题】:How to fix the error: The array return by func must be one-dimensional, but got ndim=2如何修复错误:func返回的数组必须是一维的,但得到ndim=2
【发布时间】:2018-04-05 05:44:11
【问题描述】:

这是我的代码:

import numpy as np
from scipy.integrate import odeint
import math

y0=np.array([1,3,2,3,5])
b=np.array([[1],[3],[4],[2],[5]])

'''generate matrix'''
B=np.dot(b,b.T)
def g(t,y,B):
    return np.exp(np.dot(y,B))
t=np.linspace(0,1,100)
y= odeint(g, y0, t, args=(B,))

错误是

"func返回的数组必须是一维的,但得到了ndim=2。"

【问题讨论】:

  • 请包含完整错误信息。

标签: python python-3.x


【解决方案1】:

尝试将函数的参数顺序更改为 def g(y,t,B)。这使错误消息消失了。您需要验证数学是否符合您的预期。

documentation of odeint 说:“f(t, y, ...) 的前两个参数顺序相反...”

【讨论】:

    【解决方案2】:

    函数的输出数组取决于输入是什么。

    为确保您的初始条件是一维的,您可以重塑 y0 数组。

    y0_reshaped = y0.reshape(n,)

    其中 n 是 y0 向量中的元素数

    【讨论】:

      猜你喜欢
      • 2022-06-21
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多