我正在监视串口并尝试在Matplotlib到达时绘制数据。因为数据是以不规则的间隔到达的,所以我使用的方法来附加数据 - 类似于this thread。
这是我的代码:
data = np.zeros(shape=(1,1), dtype=[('millis',float),('temperature_Celsius',float),('relative_humidity',float),('setpoint',float),('relay_status',float)])
print data # gives a 1-row, 5-element tuple: [[(0.0, 0.0, 0.0, 0.0, 0.0)]]
# append the new row
# throws error regarding array dimensions
data = np.vstack(( data, [(1,2,3,4,5)] ))
我无法正确获取尺寸,因为我收到以下错误:
ValueError: all the input array dimensions except for the concatenation axis must match exactly
请帮助识别语法错误。
在Python 2.6,Numpy 1.8,Windows 7上运行。
答案 0 :(得分:5)
必须是dtype
:
>>> d2=asarray([(1.,2.,3.,4.,5.)],dtype=[('millis',float),('temperature_Celsius',float),('relative_humidity',float),('setpoint',float),('relay_status',float)])
>>> d2=asarray([(1.,2.,3.,4.,5.)],dtype=data.dtype) #or this
>>> d2
array([(1.0, 2.0, 3.0, 4.0, 5.0)],
dtype=[('millis', '<f8'), ('temperature_Celsius', '<f8'), ('relative_humidity', '<f8'), ('setpoint', '<f8'), ('relay_status', '<f8')])
>>> vstack((data,d2))
array([[(0.0, 0.0, 0.0, 0.0, 0.0)],
[(1.0, 2.0, 3.0, 4.0, 5.0)]],
dtype=[('millis', '<f8'), ('temperature_Celsius', '<f8'), ('relative_humidity', '<f8'), ('setpoint', '<f8'), ('relay_status', '<f8')])
旁注:是否适用于某些建筑项目?看起来很有趣。