- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 QGIS-user forum 上发布了这个问题但这可能太技术性了,因此我也捕获机会在这里尝试一下。
我的计划是有一个 QGIS 插件来读取和绘制与矢量图层中选定点对应的时间序列数据(这些点代表不同的测量站,我需要快速查看每个和其中一个的时间序列,有时同一地 block 中的几个站点)。因此,我需要 Python 从 Spatialite 表中读取时间序列数据,然后使用 Matplotlib.plot 绘制它:
from pyspatialite import dbapi2 as sqlite
import numpy as np
import matplotlib.pyplot as plt
import datetime
MyPath = r"C:\DATA\DBTEST\MyTestDb.sqlite"
conn = sqlite.connect(MyPath,detect_types=sqlite.PARSE_DECLTYPES|sqlite.PARSE_COLNAMES)
curs = conn.cursor()
sql = r"""SELECT Date as 'date [datetime]', Level_masl FROM MyTable"""
rs = curs.execute(sql)
recs = rs.fetchall()
My_format = [('date_time', datetime.datetime), ('values', float)]
table = np.array(recs, dtype=My_format)
table2=table.view(np.recarray)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(table2.date_time, table2.values, 'o-')
....
但似乎我没有得到正确的数据类型,因为 matplotlib 不接受我的“date_time”。打印表 2 如下所示,我猜小 u 表示它是 unicode 而不是 datetime?
print table2
recarray([(u'2011-04-20 09:42:00', 703.46000000000004), (u'2011-04-20 09:43:00', 705.35000000000002), ... dtype=[('date_time', '|O4'), ('values', '
我不是程序员,绝对是 Python 和 Spatialite 的初学者,所以非常感谢任何帮助!
/JK
最佳答案
基本上,您正在尝试传入一个字符串。
Matplotlib 有几个方便的函数,用于将日期字符串转换为其(内部)日期时间表示。
尝试更像:
...
from matplotlib.dates import datestr2num
...
...
time = datestr2num(table2.date_time)
ax.plot_date(time, table2.values, 'o-')
...
plot_date
与 plot
相同,它只是自动格式化 x 轴以具有时间(例如小时、日期、月份等)标签。
如果您更愿意使用 plot
(或 bar
等),只需调用 ax.plot(time, y, ...)
或 ax.bar
像往常一样,然后调用 ax.xaxis_date()
来设置日期标签。
关于Python:SpatiaLite 表到带有日期时间格式的 numpy recarray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757461/
假设我用相同的 dtype 制作了两个 recarrays 并将它们堆叠起来: >>> import numpy as np >>> dt = [('foo', int), ('bar', float
如果我以这种方式创建一个 recarray: In [29]: np.rec.fromrecords([(1,'hello'),(2,'world')],names=['a','b']) 结果看起来不
我有一对 numpy 数组;这是一个简单的等效示例: t = np.linspace(0,1,100) data = ((t % 0.1) * 50).astype(np.uint16) 我希望这些是
我有一个结构化的 numpy 数组,我正在按顺序对其进行排序。 它工作得很好,但只有一个方向! 降序: sort(myStructuredArray,order=my_order)[::-1] 和 上
我有一个名为 data.csv 的数据文件 name,value A,10 1,20 B,30 3,20 ... 所以问题是我使用 numpy 和 mlab 来加载这个 csvfile data =
在numpy docs的一次访问多个字段部分中, 说: 请注意,字段总是以相同的顺序返回,不管它们被要求的顺序如何。 文档还给出了一个例子如下: >>> x = np.array([(1.5,2.5,
我有一个 csv 文件,其中两列(v3 和 v7)对于所有观察结果都是空白的: v1,v2,v3,v4,v5,v6,v7 GNB,1980,,20,-1.168689,0.4619077, GNB,1
给定一个元组列表,其中每个元组代表表中的一行,例如 tab = [('a',1),('b',2)] 有没有一种简单的方法可以将其转换为记录数组?我试过了 np.recarray(tab,dtype=[
构造结构化/重载数组时,我对类型转换的行为感到困惑: 这个简单的示例接受数字字段,但将类型定义为字符串: data = [(1.0, 2), (3.0, 4)] np.array(data, dtyp
有没有一种简单的方法可以在不创建新的 recarray 的情况下将记录/行添加到 numpy recarray?假设我有一个占用 1Gb 内存的 recarray,我希望能够向其中添加一行而不让 py
我用 C# 编写了一个数据使用者,它从 python API 脚本读取字符串数据。到目前为止,我发现性能最好的方法是将数据放入 python 中的 numpy-recarray,将其打印到控制台并使用
我正在尝试复制一个recarray 并更改新数组中字段/记录的名称。但是,这会修改原始数组的名称(但是,这些值并未取消链接)。例子: import numpy as np import copy 定义
我在创建 datetime64 类型的记录数组时遇到问题。我正在运行 Python 2.7、Numpy 1.7。 这是一个最小的例子: p_dtype = np.dtype({"names": ['t
numpy.recarray.tobytes 的逆是什么? >>> import numpy as np >>> A = np.array([(28483,27759)],dtype=[('x','>
我想创建一个 numpy.recarray 的子类,当数据添加到超出其当前长度的行时自动调整大小。 下面的代码完成了大部分我想要的。 class autorecarray(numpy.recarray
我在 QGIS-user forum 上发布了这个问题但这可能太技术性了,因此我也捕获机会在这里尝试一下。 我的计划是有一个 QGIS 插件来读取和绘制与矢量图层中选定点对应的时间序列数据(这些点代表
有没有一种方便的方法可以删除 recarray 中包含某些值的行?假设我有以下数组, a=numpy.array([(1.0, 2.0, 3.0), (4.0, 5.0, 10.0),(1.0,10.
我有一个来自读取 csv 文件的 recarray。我有兴趣将列的子集转换为连续的 float 组。我想避免将它们转换为列表或将它们一一堆叠。我尝试了 https://stackoverflow.co
我是 numpy 的新手,我正在尝试替换 recarray 中的值。所以我有这个数组: import numpy as np d = [('1', ''),('4', '5'),('7', '8')]
我有一个 recarray,其中包含几个用于选择子集的列。有点像 >>> x array([ ('label1',True,3), ('label2',True,2),
我是一名优秀的程序员,十分优秀!