我有一个词典需要转换为NumPy结构化数组。我正在使用arcpy函数NumPyArraytoTable
,所以NumPy结构化数组是唯一可行的数据格式。
根据这个主题:Writing to numpy array from dictionary和这个主题:How to convert Python dictionary object to numpy array
我尝试了以下代码:
result = {0: 1.1181753789488595, 1: 0.5566080288678394, 2: 0.4718269778030734, 3: 0.48716683119447185, 4: 1.0, 5: 0.1395076201641266, 6: 0.20941558441558442}
names = ['id','data']
formats = ['f8','f8']
dtype = dict(names = names, formats=formats)
array=numpy.array([[key,val] for (key,val) in result.iteritems()],dtype)
但我不断收到 expected a readable buffer object
错误信息。
下面的方法可以解决问题,但这种做法很愚蠢,对于真实数据肯定行不通。我知道有更为优雅的方法,只是想不出来。
totable = numpy.array([[key,val] for (key,val) in result.iteritems()])
array=numpy.array([(totable[0,0],totable[0,1]),(totable[1,0],totable[1,1])],dtype)
result.items()
更改为list(result.items())
来修复它。Python 3.5 - Atlas7