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

Iterating through multiple variables while performing a calculation and saving result? List comprehension, enumerate() - Python

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

对于通过 temp 的每一步,我想 运行 计算湿度范围,因此在 T=0 时,我计算列表中的每个 RH 并保存每个计算的结果(returns 一个 np.array),然后在 T=1 再次对整个 RH 范围重复计算并保存每个结果等等...

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

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 个结果保存为数组。

如果您希望 ray2 和 ray18 保留为 one-dimensional 数组,那么您可以使用此处看到的方法对它们进行寻址: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 x 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)