我对不同实验/设备进行此操作,运行时间不同(都是25的倍数)。例如,列表1运行1000次,列表1中有1000/25=40个值,列表2运行1025分钟,列表2中有1025/25=41个值,列表3运行2525次,列表3中有2525/25=101个值,以此类推...
现在,为了比较,我想将每个列表重新调整到相同数量的箱中,假设为40个箱。
实际上,list1resized的长度将为40,其值不会改变,因为1000/40=25。list2resized将从41个值的长度变为40个值的长度,list3将从101个值的长度变为40个值的长度(即所有列表现在都具有相同的大小)。
现在问题来了。如何通过对适当的箱子进行加权平均值来将每个列表调整为固定长度的40?
下面是一个示例,可以澄清这个问题。
list1 = [4.8, 6.9, ...] #40 values for the 1000 run
list2 = [5.6, 7.8, 8.9, 13.4, ...] #41 values for the 1025 run
list3 = [4.1, 5.6, 10.3, 9.8, 40, 30, 21.4, 3, 2,...] #101 values for the 2525 run
现在,调整大小后的列表应该看起来像这样:
list1resized = [4.8*25/25, 6.9*25/25,...] #40 values for the 1000 run
list2resized = [(5.6*25+7.8*0.625)/25.625, (7.8*24.375+8.9*1.275)/25.625, (23.725*8.9+1.9*13.4)/25.625,...] # 40 values, averaged accordingly, for the 1025 run
list3resized = [(4.1*25+5.6*25+10.3*13.125)/(63.125), (10.3*11.875+9.8*25+40*25+30*1.25)/(63.125),...] # 40 values, averaged accordingly, for the 2525 run
为了获得每个重新调整大小的列表元素的平均值,我们对新的调整大小的容器进行了加权平均(即对于list1取1000/40=25个平均值,对于list2取1025/40=25.625个平均值,对于list3取2525/40=63.125个平均值等)。也就是说,使用我用于加权平均的公式。
list1resized = [4.8*25/25, 6.9*25/25,...] #40 values for the 1000 run
list2resized = [(5.6*25+7.8*0.625)/25.625, (7.8*24.375+8.9*(25.65-24.375))/(25.625), (23.725*8.9+(25.625-23.725)*13.4)/(25.625),...] # 40 values, averaged accordingly, for the 1025 run
list3resized = [(4.1*25+5.6*25+10.3*13.125)/(63.125), (10.3*(25-13.125)+9.8*25+40*25+30*(63.125-25*3+13.125)))/(63.125),...] # 40 values, averaged accordingly, for the 2525 run
您可以看到,这可能会变得混乱且难以处理,但我正在寻找一个Pythonic、优雅且快速的解决方案来解决这个问题。
我需要对许多列表执行此操作多次,因此考虑运行时间很重要。
不确定您是否有任何想法,但帮助将不胜感激。
谢谢。