NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,那json文件要转换numpy数组应该怎么做?下面来我们就来给大家讲解一下这方面的内容。
我们用实例来讲解:
有一个MongoDB集合,当通过PyMongo导入到Python时,它是Python中的一个术语。 我想把它转换成一个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.数组([[50,14,23,32,41], [1,1,2,3,4]]) 在这种情况下,第一列对应“A”,第二列对应“BA”,第三列对应“BB”等。 请注意,键并不总是按相同的顺序排序。
我的代码根本不起作用(而且还没有做我想做的事情),看起来是这样的:
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])
假设您已经成功地将JSON加载到Python中,下面是创建所需Numpy数组的一种方法。我的代码有一个ObjectId的最小定义,这样它就不会在ObjectId条目上引发名称错误。
sorted(d["B"].items())]
从按键排序的“B”字典内容中生成(键,值)元组的列表。然后,我们只将这些元组中的值提取到列表中,并将该列表附加到包含“a”项中的值的列表中。
import numpy as np class ObjectId(object): def __init__(self, objectid): self.objectid = objectid def __repr__(self): return 'ObjectId("{}")'.format(self.objectid) data = [ { "_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 } } ] array2 = np.array([[d["A"]] + [v for _, v in sorted(d["B"].items())] for d in data]) print(array2)
输出
[[50 14 23 32 41] [1 1 2 3 4]]
numpy怎么应用?
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。
SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。
NumPy 是一个运行速度非常快的数学库,主要用于数组计算,开发人员一定要会使用numpy,最后大家如果想要了解更多json工具教程知识,敬请关注奇Q工具网。
推荐阅读: