为了账号安全,请及时绑定邮箱和手机立即绑定

在python中迭代一维数组的每个元素

在python中迭代一维数组的每个元素

临摹微笑 2022-06-02 15:42:55
我从一个nc文件中读取了数组形式的变量。现在我已经用所有这些变量的第一个元素进行了计算并创建了一个新变量。我想为初始数组中的每个元素重复相同的一组计算,而不更改我考虑单点的计算代码。我已经尝试过zip,nditer但在这两种情况下,变量中的 if 语句a都将更改为.any()or .all()。我也不能这样做,因为我希望 if 语句只考虑一个点而不是整个数组。T = AD06_ALL_OMNI.variables['A_TEMP'][:][0]  REL_HUM = AD06_ALL_OMNI.variables['HUMIDITY'][:][0]AIR_PRES = AD06_ALL_OMNI.variables['A_PRES'][:][0]a = T-29.65#masking of values so that division by 0 is avoidedif a!=0.0:    exponent1 = math.exp(17.67*T-0.16/a)   q = REL_HUM*exponent1/(26.3*AIR_PRES)  deltaq = 0.98*qs-qprint (deltaq)我需要a对每个点进行计算,以便从 T,和对应的点deltaq中找出相同的点。所有变量的大小相同(一维数组)。请帮忙!REL_HUMAIR_PRES
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

for var in range(0, length(AD06_ALL_OMNI.variables['A_TEMP'][:])-1):

    T = AD06_ALL_OMNI.variables['A_TEMP'][:][var]  

    REL_HUM = AD06_ALL_OMNI.variables['HUMIDITY'][:][var]

    AIR_PRES = AD06_ALL_OMNI.variables['A_PRES'][:][var]

    a = T-29.65

    #masking of values so that division by 0 is avoided

    count = 0

    for element in a:

        if element!=0.0:

            exponent1 = math.exp(17.67*T[count] -0.16/element)   

        q = REL_HUM[count]*exponent1/(26.3*AIR_PRES[count] )  

        deltaq = 0.98*qs-q

        print (deltaq)

        count = count + 1

假设所有数组的长度相同(如果没有相等长度的气压、气温和湿度,这没有意义),您可以使用循环遍历 a 的所有值,检查每个值都为 0,并计算并打印每个点的 deltaq。我希望这有帮助。


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信