我有一个MongoDB集合,它在通过PyMongo导入到Python时是Python中的一个词典。 我期待将其转换为Numpy数组。从JSON文件到Numpy数组
举例来说,如果JSON文件看起来像这样:
{
"_id" : ObjectId("57065024c3d1132426c4dd53"),
"B" : {
"BA" : 14,
"BB" : 23,
"BC" : 32,
"BD" : 41
"A" : 50,
}
{
"_id" : ObjectId("57065024c3d1132426c4dd53"),
"A" : 1
"B" : {
"BA" : 1,
"BB" : 2,
"BC" : 3,
"BD" : 4
}
我想回报得到这个5 * 2 numpy的阵列: np.array([50 ,14,23,32,41], [1,1,2,3,4]]) 在这种情况下,第一列对应于“A”,第二列对应于“BA”,第三个对应“BB”等。 注意,密钥并不总是按照相同的顺序排序。
我的代码,这并不在所有的工作(并没有做什么,我想还没有)看起来是这样的:用MongoDB的数据结构中工作时
from pymongo import MongoClient
uri = "mongodb://localhost/test"
client = MongoClient(uri)
db=client.recodb
collection=db.recos
list1=list(collection.find())
array2=np.vstack([[product[key] for key in product.keys()] for product in list1])
我不知道MongoDB的,但不是有效的JSON对象。它应该是一个字典列表吗?此外,'ObjectId(“57065024c3d1132426c4dd53”)'不是有效的JSON项目:它应该被序列化为某种字符串,例如''ObjectId(\“57065024c3d1132426c4dd53 \”)“'。 –
这是文件在RoboMongo中的外观,我用它来查看这个集合。 – popuban
然后,'list1'是一个词典列表。关于斜线,我不确定,但由于我最终没有使用,所以它并不重要。 – popuban