背景故事:我是python的新手,之前只在MATLAB中做过。
我希望根据我的数据从表中获取特定值。
我的数据是
温度= [0.8,0.1,-0.8,-1.4,-1.7,-1.5,-2,-1.7,-1.7,-1.3,-0.7,-0.2,0.3,1.4,1.4,1.5,1.2, 1,0.9,1.3,1.7,1.7,1.6,1.6]
每天的小时= [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23] < / p>
这是星期一的所有数据。
我的星期一表格如下:
Temp | Hr0 | Hr1 | Hr2 ...
-15 < t <= -10 | 0.01 | 0.02 | 0.06 ...
-10 < t <= -5 | 0.04 | 0.03 | 0.2 ...
温度增加+5到30,以及直到23的一天中的小时数。表中的值是我想根据温度和小时调用的常数。
例如,我希望能够说:
print(monday(1,1))= 0.01
我也会在本周的每一天进行大规模数据分析,因此需要高效。
到目前为止我做了什么:
所以我把所有的表存放在看起来像这样的字典中:
monday_hr0 = [0.01,0.04,...]
首先按列然后按温度值调用它们。
我现在拥有的是一堆看起来像这样的循环:
for i in range (0,365):
for j in range (0,24):
if Day[i] = monday
if hr[i+24*j] = 0
if temp[i] = -15
constant.append(monday_hr1[0])
...
if hr[i+24*j] = 1
if temp[i] = -15
constant.append(monday_hr2[0])
...
...
elif Day[i] = tuesday
if hr[i+24*j] = 0
if temp[i] = -15
constant.append(tuesday_hr1[0])
...
if hr[i+24*j] = 1
if temp[i] = -15
constant.append(tuesday_hr2[0])
...
...
...
我基本上在这里说如果是星期一,请使用此表。然后,如果是这个小时,请使用此列。然后,如果是这个温度,请使用此单元格。然而,这非常非常低效。
我确信有更快的方法,但我无法绕过它。非常感谢你的帮助!
答案 0 :(得分:0)
好的,在这里忍受我,我在移动。我会尝试写一个解决方案。
我假设以下内容:
day_data
的词典,其中包含一周中每一天的数据表。
days
的词典,它将0-6映射到一周中的某一天。 0是星期一,6是星期日。day_data
中挑选出适当的数据。你想在一年中的每一天都这样做。 我们只需要在365天内完成一次迭代,一天中每小时一次。
heat-load-days={}
for day_index in range(1,365):
day=Days[day_index%7]
#day is now the Day of the week.
data = day_data[day]
Heat_load =[]
for hour in range(24):
#still unsure on how to select which temperature row from the data table.
Heat_load.append (day_data_selected)
heat-load-days [day] = Heat_load