首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python系列的真值在函数中是不明确的错误

Python系列的真值在函数中是不明确的错误
EN

Stack Overflow用户
提问于 2021-03-31 00:48:20
回答 1查看 45关注 0票数 0

我正在尝试构建一个函数,它使用多个标量值作为输入,并使用一个序列或数组作为输入。

该函数将计算应用于序列中的每个值。到目前为止,它工作得很好。但是现在我添加了一个阶段,它必须检查级数的值,如果它小于X,它会进行一次计算,另一次计算。

然而,我总是得到一个‘真值序列是模棱两可的错误,我似乎无法解决它。

什么是工作?

我的代码如下

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-02 03:21:38

替换if - else语句:

代码语言:javascript
运行
复制
if t < t_exp_sw:
    return Qcum
else:
    return Qcum_exp

有了这个:

代码语言:javascript
运行
复制
Q.where(t < t_exp_sw, Q_exp)
return Q

where方法测试Q的每个成员的条件,如果为true,则保留原始值,如果为false,则将其替换为Q_exp的相应元素

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66875103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档