knownEmbeddings = []
knownNames = []
for (i, imagePath) in enumerate(imagePaths):
## SOME CODE
knownNames.append(name)
knownEmbeddings.append(vec.flatten())
data = {"embeddings": knownEmbeddings, "names": knownNames}
f = open('file.json', "wb")
f.write(json.dumps(data, indent=4))
f.close()
以下是data
的外观:
我需要把它保存在json文件中。当我调试时,data
显示为dict
类型,因此我使用json.dumps(data)
将其保存在json文件中,但它引发以下错误:
TypeError: Object of type 'ndarray' is not JSON serializable
我怎么解决
data
确实是dict
,但它包含{这里您需要的是提供您自己的JSONEncoder,它知道如何处理
ndarray
(将它们转换成bharatk建议的列表是最明显的解决方案)。在您想先转换成64位
float
的列表,例如给我:
TypeError: Object of type float32 is not JSON serializable
如果在序列化为JSON之前将其转换为64位浮点值,则可以:
^{pr2}$我成功地恢复了
'[1.0]'
另外请注意,如果您有一个file对象,那么最好使用
json.dump
,例如,尝试执行以下操作:相关问题 更多 >
编程相关推荐