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

时间:2018-03-28 18:35:23

标签: python list-comprehension enumerate

我有一系列温度('T')(0 - 100,包括0和100)和一系列湿度('RH')(0-1.00),因此每个列表中有101个值。

对于每个步骤到temp,我想对湿度范围进行计算,所以在T = 0时我计算列表中的每个RH并保存每个计算的结果(返回一个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结果保存为数组。

2 个答案:

答案 0 :(得分:1)

如果您希望将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发布的解决方案。

答案 1 :(得分:1)

我认为你需要用m零点矩阵创建n,然后将所有数据保存到它

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)