Python ValueError:使用缓冲区设置具有对象成员的无效数组。绘制numpy数组的时间序列
我有两个带(时间和日期)的numpy数组,第三个带rain。最后,我想用matplotlib在xy绘图中绘制所有信息! 这就是我到目前为止得到的Python ValueError:使用缓冲区设置具有对象成员的无效数组。绘制numpy数组的时间序列,python,numpy,matplotlib,strptime,genfromtxt,Python,Numpy,Matplotlib,Strptime,Genfromtxt,我有两个带(时间和日期)的numpy数组,第三个带rain。最后,我想用matplotlib在xy绘图中绘制所有信息! 这就是我到目前为止得到的 import os import time from datetime import datetime import time import numpy as np import matplotlib.dates as mdates import matplotlib.pyplot as plt date = np.array(["01.06.20
import os
import time
from datetime import datetime
import time
import numpy as np
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
date = np.array(["01.06.2015", "01.06.2015", "01.06.2015"], dtype=object)
time = np.array(["12:23:00", "14:54:00", "14:56:00"], dtype=object)
# Rain
rain = np.array([2.544, 1.072, 1.735]
# Calculations to make one array of time and date,
# called timestamp
A = np.vstack((date, time))
A_transp = A.transpose()
A_transp.shape
A_transp.type
最后,如前所述,我想要一个(x,y)图,带有时间戳(所以时间和日期组合成一个浮点数数组,雨在其他轴上
谢谢你的帮助
马库斯
谢谢你的帮助,但我没有得出结论!
我做了更多的步骤
# Get a new .out file, to get a time tuple
# see strptime.
# Finally I would like to make a floating point number out of the
# timetuple, to plot the hole thing!
#
mydata = np.savetxt('A_transp.out', A_transp
,fmt="%s")
# Dateconv
dateconv = lambda s: datetime.strptime(s, '%d.%m.%Y %H:%M:%S')
# ColNames
col_names = ["Timestamp"]
# DataTypes
dtypes = ["object"]
# Read in the new file
mydata_next = np.genfromtxt('A_transp.out', delimiter=None,
names=col_names, dtype=dtypes, converters={"Timestamp":dateconv})
因此,在np.genfromtxt之后出现以下错误消息
Traceback (most recent call last):
File "parsivel.py", line 155, in <module>
names=col_names, dtype=dtypes, converters={"Timestamp":dateconv})
File "/home/unix/anaconda2/lib/python2.7/site-
packages/numpy/lib/npyio.py", line 1867, in genfromtxt
output = np.array(data, dtype)
ValueError: Setting void-array with object members using buffer.
最后,我想描绘如下
# Plot
# Fail
#plt.plot_date(mydata_next, rain)
#plt.show()
但是现在所有的绘图都失败了,因为我无法从一个_transp!中生成一个时间元组!可能strtime函数也不在这里,或者有另一种方法,通过np.savetxt绕道,尝试重新调整一个_transp?从原始日期和时间数组开始,您可以在一个字符串中获得一个日期-时间字符串表示只需添加它们,就可以删除数组:
In[61]: date_time = date + time
In[62]: date_time
Out[62]: array(['01.06.201512:23:00', '01.06.201514:54:00', '01.06.201514:56:00'], dtype=object)
现在,您可以将日期时间字符串转换为日期时间格式。例如:
In[63]: date_time2 = [datetime.strptime(d, '%d.%m.%Y%H:%M:%S') for d in date_time]
In[64]: date_time2
Out[64]:
[datetime.datetime(2015, 6, 1, 12, 23),
datetime.datetime(2015, 6, 1, 14, 54),
datetime.datetime(2015, 6, 1, 14, 56)]
这就是绘制数据所需的全部内容:
plt.plot_date(date_time2, rain)
您看过绘图文档了吗?请慢慢阅读文档和最终教程。如果您遇到问题,可以在此处发布,我们将尽力帮助您。@code11谢谢您的帮助,但我没有得出结论!我所做的进一步步骤在编辑版本中!Thxs
plt.plot_date(date_time2, rain)