【发布时间】:2016-11-02 01:15:37
【问题描述】:
我正在分析足部压力,其中每个读数是一个 52x44 矩阵,完整捕获是这些 2D 读数的时间序列。
这可以很容易地用一个形状为 (52x44xN) 的 Numpy 数组来表示,其中 N 取决于采样率和捕获的持续时间。使用 Numpy,我已经可以执行我需要的所有操作(主要是切片和简单的描述性统计)。
我有兴趣探索 Pandas 的功能,但我想知道什么是合适的列名和结构。
使用 Numpy 3D 数组,我有索引 I、J 和 N。如果我使用 N 作为 Pandas DataFrame 的索引,我将使用什么作为数据列?我会觉得使用 I、J 和 V(值)作为列很奇怪,因为这会创建显式(和冗余)索引值,实际上使用的是 (3 x (52*44*N)) 形状的矩阵。
现在如果我将一个数组作为列值,那么 3D 切片(“框”选择)就会有问题,不是吗?
(编辑)我看过一些关于 MultiIndex 的东西,但我不确定如何使用它。
你有什么建议?
【问题讨论】:
-
我没有这方面的经验,但xarray 是一个流行且支持良好的 Python 库,用于此类事情。
-
您能否添加一个示例“现在,如果我将数组作为列值,则 3D 切片(“框”选择)会出现问题,不是吗?”你想要完成什么,为什么这行不通?另外,也许您可以考虑用于 3 维数据的
pandas.Panel。我之前只使用过DataFrame,所以不知道这是否能解决你的问题。 -
@user2570465 我已经阅读了有关这种情况的 Panel 文档,看起来它会起作用。但我相信,事实上,Pandas 似乎并没有为 Numpy 添加任何好处对于这个特定的用例,因为数据是同质的(单一数据类型),并且不同的列没有除了普通索引之外的语义。
-
@user2570465 但最后,是的,我认为 DataFrame/MultiIndex 或“3D”面板将是在有人真的想要表示 2D 时使用的结构时间序列。我会倾向于尝试第一个。您如何看待写一个答案以便我接受它?
-
@heltonbiker 我发布了关于 Pandas 的答案
Panel。很高兴听到这是一个简单的解决方案。感谢您接受答案!
标签: python pandas numpy multidimensional-array