我有一个字典,我需要转换为NumPy结构化数组。我使用的是arcpy函数NumPyArraytoTable
,所以NumPy结构化数组是唯一可以工作的数据格式。python字典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)
我提到这个答案你的使事情发生,它是行不通的。花了几天的时间。你能帮忙吗? http://stackoverflow.com/questions/32723802/scipy-and-preserving-mat-file-mat-matlab-data-file-structure – Raaj 2015-09-22 19:23:58
直接复制和粘贴代码示例给出错误。我通过将'result.items()'更改为'list(result.items())'来修复它。 Python 3.5 – Atlas7 2017-09-22 00:36:54
@ Atlas7:感谢您的提醒。答案已经更新为Python3。 – unutbu 2017-09-22 00:56:09