python步长什么意思_python – Numpy:在每个时间步长平均许多数据点

这个问题可能在某个地方得到解答,但我找不到哪里,所以我会在这里问:

我有一组数据,每个时间步长有几个样本.所以,我基本上有两个数组,“时间”,看起来像:(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()

这是它的样子:

解决方法:

我可以提出一个pandas解决方案.如果您打算使用时间序列,强烈建议您使用.

创建测试数据

import pandas as pd

import numpy as np

times = np.random.randint(0,10,size=50)

values = np.sin(times) + np.random.random_sample((len(times),))

s = pd.Series(values, index=times)

s.plot(linestyle='.', marker='o')

计算平均值

avs = s.groupby(level=0).mean()

avs.plot()

标签:python,matplotlib,numpy,scipy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值