在python中迭代1d数组的每个元素

2024-04-25 15:06:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我从nc文件中读取了数组形式的变量。现在我用所有这些变量的第一个元素进行了计算,并创建了一个新变量。我想对初始数组中的每个元素重复相同的一组计算,而不必更改计算的代码,因为我考虑了一个点。你知道吗

我试过zipnditer,但在这两种情况下,变量a中的if语句都要更改为.any().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 avoided
if a!=0.0:
    exponent1 = math.exp(17.67*T-0.16/a)   
q = REL_HUM*exponent1/(26.3*AIR_PRES)  
deltaq = 0.98*qs-q
print (deltaq)

我需要为每个点计算a,这样就可以从对应点的T,REL_HUMAIR_PRES的值中找出相同点的deltaq。所有变量的大小都相同(1d数组)。请帮帮我!你知道吗


Tags: 元素if数组语句variablesairallrel
1条回答
网友
1楼 · 发布于 2024-04-25 15:06:26
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。我希望这有帮助。你知道吗

相关问题 更多 >