这个问题可能在某个地方得到了回答,但我找不到在哪里,所以我会在这里问:
我有一组数据,每个时间步包含几个样本。所以,我基本上有两个数组,“次”,看起来像:(0,0,0,1,1,1,1,1,2,2,3,4,4,4,4,.. .) 和我的数据,这是每次的价值。每个时间步都有随机数量的样本。我想以有效的方式获得每个时间步的数据平均值。
我准备了以下示例代码来显示我的数据的样子。基本上,我想知道是否有更有效的方法来编写“average_values”函数。
import numpy as np
import matplotlib.pyplot as plt
def average_values(x,y):
unique_x = np.unique(x)
averaged_y = [np.mean(y[x==ux]) for ux in unique_x]
return unique_x, averaged_y
#generate our data
times = []
samples = []
#we have some timesteps:
for time in np.linspace(0,10,101):
#and a random number of samples at each timestep:
num_samples = np.random.random_integers(1,10)
for i in range(0,num_samples):
times.append(time)
samples.append(np.sin(time)+np.random.random()*0.5)
times = np.array(times)
samples = np.array(samples)
plt.plot(times,samples,'bo',ms=3,mec=None,alpha=0.5)
plt.plot(*average_values(times,samples),color='r')
plt.show()
这是它的样子: