通过func返回数组(1)与Python中的大小不匹配

乌斯曼·尤萨夫·扎伊

我是python的新手,所以请多多包涵。我正在使用python中的odeint函数解决一个模型,该模型中出现错误。func (1)返回的数组的大小与y0(2)的大小不匹配。也许我在重新使用odeint函数中的args时犯了一个错误,但是我已经看到与odeint LINK相关的关于桩溢出的帖子,并且可以与返回参数一起正常工作。我不知道这是什么问题,或者我可能是错误的方向。如果我错了,请纠正我。

from scipy import *
from scipy.integrate import odeint
from operator import itemgetter
import matplotlib
matplotlib.use('Agg')
from matplotlib.ticker import FormatStrFormatter
from pylab import *

import sys

ExpData = [1.0 , 1.1660520579009868 , 1.3688685188071037 , 1.6165891026469563 ,
           1.9191557810726714 ]

t_range = arange(0.0,20.0,0.1)

y0 = [1,0.5]
VarList = ["a","b"]
ParaList = ["k1","k2"]
k1 = 1
k2 = 2


def func(Y,t,modelID,t1,t2):
    return GenModel(Y,modelID,t1,t2)

def GenModel(Y,modelID,t1,t2):
    RetY = [None]
    if modelID == 1:
        RetY = Y[0] + Y[1]
    elif modelID == 2:
        RetY = t1*Y[0] + Y[1]
    elif modelID == 3:
        RetY = Y[0] + t1*Y[1]
# code reduced from here

    if Y[0] == 0 or Y[1] == 0:
        if modelID == 27:
            RetY = 0
        elif modelID == 28:
            RetY = 0
    if Y[0] != 0 and Y[1] != 0:
        if modelID == 27:
            RetY = Y[0]*Y[1]
        elif modelID ==28:
            RetY = t1*Y[0]*Y[1]
        elif modelID == 29:
            RetY = t2*Y[0]*Y[1]
           # code reduced from here as well
    return RetY

def EvalModelFitness(Stofloat,ExpData):
    Sum = 0.0
    for i in range(len(Stofloat)):
        Sum += (Stofloat[i]-ExpData[i])**2
    print Sum/len(Stofloat)

if y0[0] == 0 or y0[1] == 0:
    NumModels = 28
else:
    NumModels = 39

for j in range(1,NumModels+1):
    S = odeint(func, y0,t_range,args=(j,k1,k2))
    Stofloat = S[:,0].astype(type('float',(float,),{}))
    EvalModelFitness(Stofloat,ExpData)
大卫

首先,您似乎在func函数的任何地方都没有使用t。

其次,返回的值集的长度必须与Y0的长度匹配。在这里,您从func返回一个值(就像错误状态一样,返回1),而Y0的长度为2(就像错误状态一样)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

二维数组中的数组大小不匹配

如何通过数组查找并返回nil(如果不匹配)?

“通过”与Python中的“不返回”相同吗?

Javascript:从包含对象的多维数组中返回不匹配的值

数组中与数组不匹配

轴不匹配数组/大小不匹配,m1:[132096 x 344],m2:[118336 x 128]

Python中的ValueError,数组中的索引数不匹配

解析文本并返回 Python 中不匹配括号的列表

如何比较两个数组中的数据并在javascript中返回不匹配的数组?

比较C++中的两个数组并根据元素的匹配或不匹配返回值

数组中的类型不匹配

从函数返回数组时类型不匹配

从shutil库中“ disk_usage”返回的字节与目录文件大小不匹配

在Matlab中返回数组的大小

字符串数组swift 3中不区分大小写的匹配搜索

从数组中返回匹配的文档

MATLAB中的向量大小不匹配

如何返回包含与 JavaScript 中给定参数不匹配的元素的数组?

“多维数组指针+1”的值不匹配

比较2个数组并显示数组1中不匹配的元素

通过 Python 返回 JSON 数组中的值和数据

复制数组并使用printall()方法将其大小加1以返回新数组中的所有int

Python re.sub不返回匹配

Python中的RegEx不匹配

python record.fromarrays错误“数组中的数组形状不匹配”

如何从数组中获取不匹配的元素

与Scala中的Array数组类型不匹配

typescript 数组处理中的类型不匹配

轴与pytorch中的数组不匹配