Python 如何用消失的样本绘制数据?

Python 如何用消失的样本绘制数据?,python,numpy,matplotlib,Python,Numpy,Matplotlib,我正在对一个程序的有效性进行基准测试,直到它找到一个解决方案为止,并试图创建图表来显示该程序倾向于如何找到解决方案。该计划有时需要500次尝试,有时需要2000次尝试。我可以证明,在找到目标之前,他们都稳步地给出了越来越好的答案。我要检查数百次运行,所以我想看看所有运行的平均值是如何随时间变化的,但是,numpy不允许我平均不同长度的数据。我怎样才能使它仅仅平均每个测试编号上可用的数据点 例:trial1=[33.4853,32.3958,30.2859,33.2958,30.1049,29.3

我正在对一个程序的有效性进行基准测试,直到它找到一个解决方案为止,并试图创建图表来显示该程序倾向于如何找到解决方案。该计划有时需要500次尝试,有时需要2000次尝试。我可以证明,在找到目标之前,他们都稳步地给出了越来越好的答案。我要检查数百次运行,所以我想看看所有运行的平均值是如何随时间变化的,但是,numpy不允许我平均不同长度的数据。我怎样才能使它仅仅平均每个测试编号上可用的数据点

例:trial1=[33.4853,32.3958,30.2859,33.2958,30.1049,29.3209]

trial2=[45.2937,44.2983,42.2839,42.1394,41.2938,39.2936,38.1826,36.2483,39.2632,37.1827,35.9936,32.4837,31.5599,29.3209]

BE=numpy.array([trial1,trial2])

BEave=numpy.平均值(BE,轴=0)


我想返回:BEave=[39.3895,38.34705,36.2849,37.7176,35.69935,34.30725,38.1826,36.2483,39.2632,37.1827,35.9936,32.4837,31.5599,29.3209]

您可以创建一个大型的NAN数组,并在试验中填充相应的最大试验数。数组行的其余部分将保持
nan
。然后沿垂直轴取平均值,使用


您的示例中存在打字错误和错误。你能修复它们吗?不清楚两个不同长度的数组的平均值到底是多少。您能提供一个简单的示例和预期的输出吗?从您的问题陈述数据大小来看,似乎不需要numpy—应该提供一个(可变长度)列表列表fine@jacoblaw,我想我已经解决了。@ImportanceOfBeingErnest我已经添加了我希望得到的答案。基本上,我希望它平均列表中某一点上存在的所有内容。因此,由于试验2比试验1长,因此结束时应为试验2,因为它是自身的平均值。谢谢。是否也有办法从每一步中得到最好和最坏的结果?我希望能够在图表上显示最佳、最差和平均值。如果“最佳”和“最差”是指最小值和最大值,numpy还有
nanmin
nanmax
方法。
import numpy as np
import matplotlib.pyplot as plt

trial1 = [33.4853, 32.3958, 30.2859, 33.2958, 30.1049, 29.3209]

trial2 = [45.2937, 44.2983, 42.2839, 42.1394, 41.2938, 39.2936, 38.1826, 
          36.2483, 39.2632, 37.1827, 35.9936, 32.4837, 31.5599, 29.3209]

m= np.max([len(trial1), len(trial2)])

# create array of nans
BE = np.ones( (2, m) )*np.nan 
# fill it with trials up to the number of trial values
BE[0,:len(trial1)] = trial1
BE[1,:len(trial2)] = trial2

# nanmean = take mean, ignore nans
BEave = np.nanmean(BE, axis=0)

plt.plot(trial1, label="trial1", color="mediumpurple")
plt.plot(trial2, label="trial2", color="violet")
plt.plot(BEave, color="crimson", label="avg")

plt.legend()
plt.show()