从 Dbf 到 numpy 数组
From Dbf to numpy array
如何在不使用 arcpy 的情况下将 dbf 转换为 numpy 数组?
我尝试使用 dbf 库,但我不知道如何 select 我的 dbf[=34= 中的特定列] 构建足够的 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 库制作的:
arr = dbf.Table(inTable)
arr.open()
arr = sorted(arr,key=lambda x:datetime.strptime(str(x[7]),"%d/%m/%Y %H:%M:%S"))
我不知道如何select我想要的列,编译和排序只需要很长时间。
感谢您的帮助。
需要注意的一件事是 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
包的作者。
如何在不使用 arcpy 的情况下将 dbf 转换为 numpy 数组?
我尝试使用 dbf 库,但我不知道如何 select 我的 dbf[=34= 中的特定列] 构建足够的 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 库制作的:
arr = dbf.Table(inTable)
arr.open()
arr = sorted(arr,key=lambda x:datetime.strptime(str(x[7]),"%d/%m/%Y %H:%M:%S"))
我不知道如何select我想要的列,编译和排序只需要很长时间。
感谢您的帮助。
需要注意的一件事是 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
包的作者。