提问人:Joe Baylay 提问时间:10/19/2023 最后编辑:Joe Baylay 更新时间:10/19/2023 访问量:40
如何根据另一个列表中的相应值是否为零创建值列表
How to create a list of values depending on whether the corresponding value in another list is zero or not
问:
我正在对太阳系进行建模,需要对温度功率损耗进行建模。这取决于给定小时的辐照度水平。我正在尝试编写一个脚本,在给定模块温度的情况下计算相应的功率损耗值。
我的最终目标是使它成为这样,当脚本读取它的每个单独值时,计算一个相应的值,除非为零,否则也是零,并将其附加到列表中,以便我可以从所有结果中创建一个数据框。total_irr
temp_loss
total_irr
temp_loss
下面是我目前正在使用的代码,我认为它为 8760 个值运行了 8760 次,而我只需要它运行一次值。total_irr
total_irr = df['Direct Irradiance'] + df['Diffuse Irradiance']
module_temp = t_dry + (((noct-20)/800)*total_irr)
def calc_temp_loss(irr):
if irr > 0:
temp_loss = (module_temp - 25) * power_coeff
else:
temp_loss = 0
return temp_loss
power_loss_list = []
for irr in total_irr:
power_loss = calc_temp_loss(irr)
power_loss_list.append(power_loss)
我还附上了我在尝试打印时收到的打印语句的屏幕截图。power_loss_list
任何帮助将不胜感激。谢谢。
答:
0赞
pho
10/19/2023
#1
您可以按照与以下相同的方式进行矢量化计算:temp_loss
module_temp
temp_loss = (module_temp - 25) * power_coeff
这将从整个系列中减去 25,然后将其乘以module_temp
power_coeff
接下来,您可以将零对应的元素设置为零:total_irr
temp_loss[total_irr == 0] = 0
最后,得到temp_loss
temp_loss.sum()
评论
df
module_temp
power_coeff
total_irr
temp_loss
total_irr