python每秒平均比特率

标签 python average bitrate

我有一个如下所示的 txt 文件:

0.065998       81   
0.319601      81   
0.539613      81  
0.768445      81  
1.671893      81  
1.785064      81  
1.881242      954  
1.921503      193  
1.921605      188  
1.943166      81  
2.122283      63  
2.127669      83  
2.444705      81  

第一列是数据包到达,第二列是数据包大小(以字节为单位)。

我需要获取每秒字节数的平均值。例如,在第一秒,我只有值为 81 的数据包,因此平均比特率为 81*8= 648bit/s。然后我应该绘制一个图表 x 轴时间(以秒为单位),y 轴平均比特率(每秒)。

到目前为止,我只设法将我的数据作为数组上传:

import numpy as np

d = np.genfromtxt('data.txt')

x = (d[:,0])  
y = (d[:,1 ])

print x  
print(y*8)

我是 Python 的新手,所以非常感谢从哪里开始的任何帮助!

这是结果脚本:

import matplotlib.pyplot as plt  
import numpy as np  
x, y = np.loadtxt('data.txt', unpack=True)  
bins = np.arange(60+1)  
totals, edges = np.histogram(x, weights=y, bins=bins)  
counts, edges = np.histogram(x, bins=bins)  

print counts  
print totals*0.008/counts  

plt.plot(totals*0.008/counts, 'r')  
plt.xlabel('time, s')  
plt.ylabel('kbit/s')  
plt.grid(True)  
plt.xlim(0.0, 60.0)  
plt.show()      

脚本读取包含数据包大小(字节)和到达​​时间的 .txt 文件,并绘制一段时间内的平均比特率/秒。用于监控服务器传入/传出流量!

最佳答案

您的数据已经按时间排序,所以我可能只对这个使用 itertools.groupby:

from itertools import groupby
with open('data.txt') as d:
     data = ([float(x) for x in line.split()] for line in d)
     for i_time,packet_info in groupby(data,key=lambda x:int(x[0])):
         print i_time, sum(x[1] for x in packet_info)

输出是:

0 324.0
1 1578.0
2 227.0

关于python每秒平均比特率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14652349/

相关文章:

python - 如何使用继承,我缺少什么?

python - 使用正则表达式量词 python 时出现关键错误

python - Kivy右键菜单

javascript - jQuery秒表,计算平均值并显示

ios - 如何计算视频的比特率?

python - 如何检查字典是否只有一个值为 "1"的键

python - 使用 numpy.average 的加权平均值

sql - SQL Server 2012 中的平均值和案例

java - 使用android studio java转换通过链接在线播放的音频mp3文件的比特率

audio - ffmpeg FLAC 24 位 96khz 到 16 位 48khz