numpy数组中的轴标签

马可斯

np.ndarray是否具有携带轴标签的功能?

假设我有一个二维数组,其维度是时间和速度。我实际上希望在对象中嵌入两个轴标签(时间和速度值),以便每当我对数组进行操作(例如,切片甚至绘图)时,该对象就可以处理轴。

搜索了一段时间后,我什么都没找到。我本人将要自己开始编写此类课程,然后考虑在这里提问,以防万一我错过了一些东西。

谢谢

编辑

鉴于到目前为止的评论和答案,我想我还没有解释清楚自己的意思,或者只是由于示例[时间,速度]过于简化而使我想要的背后的原因不清楚。

在我工作的领域,通常有多个传感器的记录,然后对数据进行分段,以便您拥有多个采样/事件。如果每个传感器跨时间捕获一维信号,则一个传感器的维数为[Sensor,Event,Time](维度本身隐含在数据中)。

当使用纯numpy.ndarray时,您将得到变量:data,一个带有记录数据的3-D数组;sensor一维np.recarray,其中包含每个传感器的所有信息(例如名称,位置等);event一维np.recarray,其中包含每个样本/事件的所有信息(例如,类型,偏移量,...);和时间,一个带有时间值的向量。

我想要的是将所有信息都放在一个对象中mydata,而不用担心基本操作(切片)。这样就mydata[0:3, 1:10]可以相应地切片相应的尺寸。

我同意,诸如绘图之类的事情将是特定于数据的,但是我将很高兴为此类对象的子类编写一些额外的功能(例如plot)。

为什么这会有用?

可读性:比较

data1 = data[0:3, 1:10]
sensor1 = sensor[0:3]
event1 = event[1:10]
time1 = time

一个简单的

mydata1 = mydata[0:3, 1:10]

维护:第二种选择显然更易于维护,并且在对所有相关变量进行正确切片时更不容易出错。

便利性:将所有这些信息放在同一位置允许在类中集成有用和强大的功能。例如,如果创建时间序列的派生类(强制具有时间轴),则可以运行特定于时间的函数,而无需指定时间或采样频率(因为此信息在对象本身之内)。想法是要有一个带有轴标记的基类,并且在必要时自然会出现特定的子类(例如,一个用于时间序列,一个用于视频,一个用于地形信息等),并包含特殊功能。

接近但不完全

正如@ user2357112所提到的,Pandas的DataFrame与我正在寻找的接近。但是,除了ND数组仍处于实验状态这一事实之外,它似乎太像表行为(针对我到目前为止所读的内容),例如,对第一维的处理方式与其他维不同(项目与列) )。

这值得么?

上面的内容看似微不足道,也不值得付出努力,但是几年前我使用这种功能对np.ndarray的子​​类进行了编程,可以向您保证,这使我的生活和代码变得如此轻松!(具体应用类似于上面的示例[传感器,样品,时间])。但是当我学习python时,那又回到了以前,而我编写代码的方式并不是您所说的那么漂亮。它还有一些基本故障,例如轴标签未遵循与np.ndarray相同的共享内存规则。

在开始重写这个东西并将它公开之前,我想知道是否还有类似的东西。

norok2

您可能正在寻找的是xarray


从其文档中:

xarray:Python中带有ND标签的数组和数据集

xarray(以前的xray)是一个开放源代码项目和Python软件包,它使使用标签的多维数组的工作变得简单,高效和有趣!

Xarray在原始的类似NumPy的数组上以尺寸,坐标和属性的形式引入标签,从而提供了更直观,更简洁和更少出错的开发人员体验。该软件包包括一个庞大且不断增长的领域不可知功能库,用于使用这些数据结构进行高级分析和可视化。

Xarray受到熊猫的启发并从熊猫那里大量借鉴。熊猫是一种流行的数据分析软件包,专注于带标签的表格数据。它特别适合处理netCDF文件,后者是xarray数据模型的来源,并且与dask紧密集成以进行并行计算。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章