Python中的高维数据结构

High-dimensional data structure in Python

在python中存储和分析高维数据的最佳方式是什么?我喜欢 Pandas DataFrame 和 Panel,我可以轻松地操纵轴。现在我有一个数据的超立方体 (dim >=4)。我一直在考虑诸如面板字典、元组作为面板条目之类的东西。我想知道 Python 中是否有高亮度面板的东西。

2016 年 5 月 20 日更新: 非常感谢所有的答案。我已经尝试过 MultiIndex 和 xArray,但是我无法对它们中的任何一个发表评论。在我的问题中,我会尝试使用 ndarray,因为我发现标签不是必需的,我可以单独保存它。

2016 年 9 月 16 日更新: 最后我想到了使用MultiIndex。刚开始的时候操作起来有点棘手,不过现在有点习惯了。

in the docs and this SO answer 所述,

MultiIndex 对于更高维度的数据最有用,因为它允许您在 DataFrame 环境中处理任意数量的维度。

除了 Panel,还有 Panel4D - 目前处于试验阶段。鉴于 MultiIndex 的优点,我不建议使用此版本或三维版本。相比之下,我认为这些数据结构并没有获得太大的吸引力,而且确实会被淘汰。

如果您需要带标签的数组和类似 pandas 的智能索引,您可以使用 xarray 包,它本质上是 pandas 面板的 n 维扩展(面板正在被弃用在 pandas 将来支持 xarray)。

否则,有时使用任意维度的普通 numpy 数组可能是合理的;您还可以拥有任意维度的任意嵌套的 numpy 记录数组。

我建议继续使用 DataFrame,但使用 MultiIndex 功能。 DataFrame 得到更好的支持,您可以使用 MultiIndex.

保留所有维度

例子

df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'], index=['A', 'B'])

df3 = pd.concat([df for _ in [0, 1]], keys=['one', 'two'])

df4 = pd.concat([df3 for _ in [0, 1]], axis=1, keys=['One', 'Two'])

print df4

看起来像:

      One    Two   
        a  b   a  b
one A   1  2   1  2
    B   3  4   3  4
two A   1  2   1  2
    B   3  4   3  4

这是数据的超立方体。您将获得更好的支持和问题服务,减少错误和许多其他好处。