python两个星号运算_Python双星号**电源运算符表现异常

我编写了一个函数,通过近似两个变量(elev和MaxQ)之间的关系来替换scipy.interp1d,从而加快了我的代码的速度.该方程是四阶多项式.我希望该函数能够为单个输入和一维数组输入计算Q值.功能如下所示.

def CalculateMaxFlow(elev):

size=np.shape(elev)

if size==():

if (elev>367.8): #minimum elev for flow

return -0.00028194553726719*elev**4+0.284027992763652*elev**3-80.3765236558431*elev**2+1900880.72298153

else: return 0

else:

MaxQ=np.zeros(np.shape(elev)[0])

for i in range(np.shape(elev)[0]):

if (elev[i]>367.8): #4th order polynomial. Not exact but okay for speeding up code

MaxQ[i]= -0.00028194553726719*((elev[i])**4)+0.284027992763652*((elev[i])**3)-80.3765236558431*((elev[i])**2)+1900880.72298153

else: MaxQ[i]= 0

return MaxQ

elev1=380

elev5a=380+np.zeros(5)

elev5b=np.asarray([380,380,380,380,380])

Q1=CalculateMaxFlow(elev1)

print("Q1:"+ str(Q1))

Q2=CalculateMaxFlow(elev5a)

print("Q2:"+str(Q2))

Q3=CalculateMaxFlow(elev5b)

print("Q3:"+str(Q3))

答案如下:

Q1:746.828053304

Q2:[ 746.8280533 746.8280533 746.8280533 746.8280533 746.8280533]

Q3:[ 6055481.13713196 6055481.13713196 6055481.13713196 6055481.13713196 6055481.13713196]

问题1和问题2给了我期望的答案.由于某些原因,第三季度没有.我想知道为什么会这样.我在控制台中看到的eleva和elevb之间唯一的区别是a是float64,b是int32.为什么这会改变方程式的结果?那么,为什么Q1(一个int)的结果也按预期工作?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值