2016-01-16 182 views
1

我從stdin得到一個浮點數並處理它。但是,現在我需要每秒處理幾個空格分隔的值。由於我對Python不熟悉,很難選擇合適的數據結構。矢量的循環緩衝區

  • 我需要計算每個通道數據的平均值。如果數據存儲爲numpy.matrix,這很簡單。

  • 我還需要爲每個通道存儲固定數量的歷史點數。到目前爲止,collections.deque(maxlen=x)做得非常好。

  • 最後,我需要根據需要將y_axisy_axis的迭代次數傳遞給需要繪製所有信號的次數。例如,如果數據是作爲矩陣的矩陣存儲的,則每秒我需要將每個通道的值列表組合到一起。

我應該使用什麼數據結構?

+0

你究竟想要做什麼?與一個人相比,幾個人產生的問題是什麼? – Untitled123

回答

0

你的過程似乎很慢,所以你有時間在雙向信息。只是爲了易於理解和繪圖而整合了numpy世界。它可以是這樣的:

10 buffers

運行的main()的動畫。

import numpy as np 
import matplotlib.pyplot as plt 
import collections as co 
buffer=[] 
for i in range(10): 
    buffer.append(co.deque(maxlen=15)) 

def refresh(n): 
    for t in range(10*n): 
     x=np.random.rand()+t%10 
     buffer[t%10].append(x) 

refresh(15) # init 
buff=np.asarray(buffer) 
fig = plt.figure() 
ax = fig.add_subplot(111) 
line = ax.plot(buff.T) 


def main(): 
    while True: 
     refresh(1) 
     buff=np.asarray(buffer) 
     print (buff.mean(axis=1)) 
     for i in range(10) : 
      line[i].set_ydata(buff[i]) 
     fig.canvas.draw() 
     for t in range(10**6):pass #tempo 
+0

deques的列表。當然! – Vorac