在Python中构造通用2D/3D/ND数据集的最健壮、最友好的交互方式是什么?

在Python中构造通用2D/3D/ND数据集的最健壮、最友好的交互方式是什么?,python,data-structures,numpy,dataset,blaze,Python,Data Structures,Numpy,Dataset,Blaze,我是一名科学家,最近从MATLAB转换成Python。我正在寻找构造我的(主要是2D和3D)数据集的方法。我已经在网上搜索了很多次,在我看来,Python中健壮的通用数据结构仍然有点悬而未决。我认为这个问题和任何答案对于其他Python科学家来说都是非常重要的,他们正在寻找一种方法来构建数据,使他们能够专注于手头的问题,而不是底层的实现 我的数据结构的一个例子是time x altitude x parameter,其中的参数是密度、温度等。对于时间维度,我想使用datetime对象,因为这看起

我是一名科学家,最近从MATLAB转换成Python。我正在寻找构造我的(主要是2D和3D)数据集的方法。我已经在网上搜索了很多次,在我看来,Python中健壮的通用数据结构仍然有点悬而未决。我认为这个问题和任何答案对于其他Python科学家来说都是非常重要的,他们正在寻找一种方法来构建数据,使他们能够专注于手头的问题,而不是底层的实现

我的数据结构的一个例子是time x altitude x parameter,其中的参数是密度、温度等。对于时间维度,我想使用
datetime
对象,因为这看起来非常健壮,便于转换、格式化等

到目前为止,我已经研究了熊猫和元阵列(来自SciPy食谱)

Pandas作为一种数据类型的主要缺点是它远远不止于此。例如,面板中的每个尺寸(项目、长轴、短轴)似乎都有某些首选用途,但我不知道是哪个。具体而言,索引根据维度的不同而不同,在创建数据结构后,可能无法扩展某些维度。因此,尽管Pandas的一些功能,如分组(
.groupby
)对于我的一小部分工作来说确实很有用,但Pandas对于交互式科学工作来说并不是很直观,我发现自己正在寻找其他选项作为我的日常数据类型

我还从SciPy的烹饪书中简要地了解了一下。这看起来更像是一种干净的数据类型,索引似乎非常直观和灵活,使其更适合交互式科学工作。然而,它不是(AFAIK)任何软件包的一部分,需要手动下载和安装,如果我需要与其他科学家合作,这使得可移植性更加困难。此外,我发现几乎没有使用它的例子,因此它似乎更像是构造N维数据集问题的一个特别解决方案

我也听说过Blaze,号称是“新一代NumPy”,但据我所知,它仍处于早期开发阶段。(欢迎体验Blaze!)


因此,我想要一些示例(模块、软件包等),说明如何用Python构建N维数据集(特别是3D),最重要的是为了方便交互使用。

我想说的是,在您更熟悉Pandas之前,请坚持使用Pandas。同意Pandas。如果索引没有意义,则始终可以使用
.values
属性访问底层numpy N维数组,同时仍然可以获得pandas的所有其他优点。对于三维数据集,您有两个主要选项,或者一个带有。此时面板缺少一些功能。您如何在Matlab中处理这些数据?@hpaulj只是一个简单的3D矩阵。它工作得相当好,只是做交互工作有点麻烦,因为你必须经常记住哪些数组维度对应于哪些轴,哪些参数对应于沿着特定轴的哪些索引,等等。这不是一个大问题,但我喜欢能够选择数据的想法,例如
数据['density','altitude':200:400,'time':'20131122':'20131124']
(示例是类似元数组的语法,使用熊猫中的“部分日期字符串”索引)是一个关于阅读Matlab.mat文件的Scipy教程。可能会给出如何将Matlab结构与numpy结构关联的想法。NetCDF和HDF5是numpy/Scipy无法处理的其他面向科学的文件结构。