如何在不使用arcpy的情况下将dbf转换为numpy数组?
我尝试使用 dbf 库,但是我没有弄清楚如何从我的 dbf 中选择特定的列来构建足够的 numpy数组。
这是我想不使用arcpy复制的脚本:
arr = arcpy.da.TableToNumPyArray(inTable ,("PROVINCE","ZONE_CODE","MEAN", "Datetime","Time"))
arr = sorted(arr,key=lambda x:datetime.strptime(str(x[3]),"%d/%m/%Y %H:%M:%S"))
使用此命令行,我可以选择所需的列,然后按时间顺序对其进行排序(这是我程序的目的)。
这是我使用 dbf lib创建的一个:
arr = dbf.Table(inTable)
arr.open()
arr = sorted(arr,key=lambda x:datetime.strptime(str(x[7]),"%d/%m/%Y %H:%M:%S"))
我不知道如何选择我想要的列,并且编译和排序只会持续很长时间。
谢谢您的帮助。
答案 0 :(得分:0)
要注意的一件事是,代码段之间的arr
是不同的-第一个是numpy array
,第二个是dbf Table
。
要获得想要的东西:
import dbf
import numpy
table = dbf.Table('some_table.dbf')
table.open()
arr = numpy.array([
(r.province, r.zone_code, r.mean, r.datetime, r.time)
for r in table
])
arr = sorted(arr,key=lambda x:datetime.strptime(str(x[3]).strip(),"%d/%m/%Y %H:%M:%S"))
我不确定性能会有什么不同。
披露:我是dbf
软件包的作者。