我正在尝试构建一个函数,它使用多个标量值作为输入,并使用一个序列或数组作为输入。
该函数将计算应用于序列中的每个值。到目前为止,它工作得很好。但是现在我添加了一个阶段,它必须检查级数的值,如果它小于X,它会进行一次计算,另一次计算。
然而,我总是得到一个‘真值序列是模棱两可的错误,我似乎无法解决它。
什么是工作?
我的代码如下
import numpy as np
import pandas as pd
import math
tramp = 2
Qo = 750
Qi = 1500
b = 1.2
Dei = 0.8
Df = 0.08
Qf = 1
tmax = 30
tper = 'm'
t = pd.Series(range(1,11))
def QHyp_Mod(Qi, b, Dei, Df, Qf, tmax, tper, t):
tper = 12
Qi = Qi * (365/12)
Qf = Qf * (365/12)
ai = (1 / b) * ((1 / (1 - Dei)) ** b - 1)
aim = ai / tper
ai_exp = -np.log(1 - Df)
aim_exp = ai_exp / tper
t_exp_sw = 118
Qi_exp = Qi / ((1 + aim * t_exp_sw * b) ** (1 / b))
Qcum = (Qi / (aim * (1 - b))) * (1 - (1 / ((1 + aim * t * b) ** ((1 - b) / b))))
t_exp = t - t_exp_sw
Qcum_Exp = (Qi_exp / aim_exp) * (1 - np.exp(-aim_exp * t_exp))
if t < t_exp_sw:
return Qcum
else:
return Qcum_exp
z = QHyp_Mod(Qi=Qi, b=b, Dei=Dei, Df=Df, Qf=Qf, tmax=tmax, tper=tper, t=t)
发布于 2021-04-02 03:21:38
替换if - else语句:
if t < t_exp_sw:
return Qcum
else:
return Qcum_exp
有了这个:
Q.where(t < t_exp_sw, Q_exp)
return Q
where方法测试Q的每个成员的条件,如果为true,则保留原始值,如果为false,则将其替换为Q_exp的相应元素
https://stackoverflow.com/questions/66875103
复制相似问题