2014-07-07 35 views
1

我有一個時間值數組= = [hh:mm:ss],秒數爲13.80秒,15.90秒等等。我所試圖做的事:將時間戳轉換爲可繪製的值數組

import time 

for i in timestamp_array: 
    new_time = time.strptime(i,"%H:%M:%S") 

我得到的錯誤:

ValueError: unconverted data remains: .80 

如何面對呢? 謝謝!

+0

如果我嘗試嘗試,除了ValueError異常解析它內部的for循環中,我得到一個錯誤,指出時間數據不匹配指定的格式。請幫忙!!! –

+0

我明白這裏的問題是秒數小數從0-61開始,我的值超過了61.我該如何解決這個問題? –

+0

通過情節你的意思是'matplotlib'?在這種情況下,你可以使用'matplotlib.dates',特別是'datestr2num()'方法。 –

回答

0

由於您要繪製這些值,因此我會建議您使用matplotlib.dates,您可以將時間轉換爲數字,也可以將時間轉換爲向後。

In [12]: 
import matplotlib.dates as mpd 
mpd.datestr2num('12:23:12') 

Out[12]: 
735420.5161111112 

In [13]: 
mpd.num2date(735420.5161111112) 

Out[13]: 
datetime.datetime(2014, 7, 6, 12, 23, 12, tzinfo=<matplotlib.dates._UTC object at 0x051FD9F0>) 

一個小例子:

plt.plot([mpd.datestr2num('12:23:12.89'), mpd.datestr2num('12:23:13.89')], 
     [1,2], 'o') 
ax=plt.gca() 
ax.xaxis.set_major_locator(mpd.HourLocator()) 
ax.xaxis.set_major_formatter(mpd.DateFormatter('%H:%M:%S.%f')) 

enter image description here

+0

我有小數點以上的秒數超過61 –

+0

如'12:23:61''?我認爲這會引發一個例外。但是'12:23:12.81'可以正常工作。 –

+0

太棒了!工作,但我該如何繪製顯示實際的時間值字符串,因爲735420.51611112對於顯示效果不是很好 –