在执行计算和保存结果时遍历多个变量?列表理解,enumerate()Python

2024-09-27 09:33:17 发布

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

我有一个温度范围('T')(包括0-100)和一个湿度范围('RH')(包括0-1.00),所以每个列表中有101个值。你知道吗

对于温度的每一步,我都想计算湿度的范围,所以在T=0时,我计算列表中的每一个相对湿度,并保存每次计算的结果(返回一个np.数组),然后在T=1时,再次对整个相对湿度范围重复计算并保存每个结果,依此类推。。。你知道吗

我使用列表理解来迭代两个列表:

ray2 = np.zeros(np.size(T)*np.size(RH))
ray18 = np.zeros(np.size(T)*np.size(RH))

for x,y in [(x,y) for x in T for y in RH]:

    ray2, ray18 = rayleigh(T[x], RH[y], f, del2, del18)

我不知道如何将计数器合并到列表中以将所有10201个结果保存为一个数组。你知道吗


Tags: in列表forsizenpzeros数组温度
2条回答

如果希望ray2和ray18保持为一维数组,则可以使用下面的方法来处理它们:Treating a 1D data structure as 2D grid。你知道吗

其代码如下:

编辑:澄清后,我已经调整了代码。你知道吗

ray2 = np.zeros(np.size(T)*np.size(RH))
ray18 = np.zeros(np.size(T)*np.size(RH))

for i, t in enumerate(T):
    for j, rh in enumerate(RH):
        index = i*np.size(RH) + j
        ray2[index], ray18[index] = rayleigh(t, rh, f, del2, del18)

但是,如果您对使用矩阵没问题,那么您可能应该使用@galaxyan发布的解决方案。你知道吗

我认为你需要创建n乘m的零矩阵,然后把所有的数据保存到它里面

ray2 = np.zeros((np.size(T), np.size(RH)))
ray18 = np.zeros((np.size(T), np.size(RH)))

for idx, t_ele in enumerate(T):
    for idx_rh, rh_ele in enumerate(RH):

        ray2[idx][idx_rh], ray18[idx][idx_rh] = rayleigh(t_ele , rh_ele , f, del2, del18)

相关问题 更多 >

    热门问题