【发布时间】:2020-10-15 14:58:39
【问题描述】:
我有一个 Python 程序,其中大部分数据都保存在字典中,主要是因为我很容易理解逻辑和数据流。
这种解决方案的缺点是计算速度慢。我想使用 NumPy 库重写软件。 例如我有一个对象:
point = {"x": 0.323441, "y": 0.982531, "r": 12, "r": 42, "b": 241}
我可以将其重写为:
np.array([0.323441, 0.982531, 12, 42, 241])
这个例子很明显,但我担心如果数据更复杂,我很难理解数据的含义。
在 NumPy 中描述数据的最佳做法是什么?
【问题讨论】:
-
我建议使用 Pandas DataFrame,其基础数据保存在 numpy 数组中,但提供更多可读的表。在您的示例中,每个都有一个列(我认为您可以将字典传递给 pandas DataFrame 构造函数
-
在 NumPy 本身中,您还拥有structured arrays,它允许您为数据的不同“字段”命名。但是,正如建议的那样,Pandas 是一个更常见的选择(还有xarray 用于高维标记数据)。
-
这不仅仅是点是什么,更重要的是你是否还有许多其他类似描述的点。对于 numpy 和 pandas,主要问题是您的数据是否由“列”很好地描述,其中每列中的值:1)是相同的类型,并且是 numpy 支持的类型(而不是
object); 2)指的是相同的概念,但具有不同的价值; 3+) 其他我现在想不到的事情。也就是说,您将拥有points_xy = np.zeros((1000, 2))和points_rgb = np.zeros((1000,3))而不是points,其中变量名称描述了它是什么(在Python 中很常见)。
标签: python numpy coding-style