小编Mar*_*cos的帖子

numpy数组中的轴标签

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

假设我有一个二维数组,其维度是时间和速度.我想实际上将两个轴标签(时间和速度值)嵌入到对象中,这样每当我对数组进行操作时(例如切片或偶数图),对象就会处理轴.

搜索了一会后我还没找到任何东西.我本来就要开始自己编写这样一个课程然后我想在这里问一下,以防万一我错过了什么.

谢谢

编辑

鉴于到目前为止的评论和答案,我认为我没有解释清楚自己,或者仅仅因为一个过于简单的例子[时间,速度]而无法理解我想要的原因.

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

当使用纯numpy.ndarray时,你最终会得到变量:data一个包含记录数据的三维数组; sensor,1-D np.recarray,包含每个传感器的所有信息(例如名称,位置......); event,1-D 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
Run Code Online (Sandbox Code Playgroud)

用一个简单的

mydata1 = mydata[0:3, 1:10]
Run Code Online (Sandbox Code Playgroud)

维护:第二个选项显然更容易维护,并且在正确切割所有相关变量时不易出错.

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

关闭但不完全

正如@ user2357112所提到的,Pandas的DataFrame接近我正在寻找的东西.但是,除了ND阵列仍然是实验性的事实之外,它似乎过于面向类似于表格的行为(对于我到目前为止所阅读的内容),例如,处理第一维度与其他维度不同(项目与列).

这值得么?

以上看起来似乎微不足道,并不值得付出努力,但几年前我编写了一个np.ndarray的子​​类,具有这样的功能,我可以向你保证,它让我的生活和代码变得更加容易!(具体应用类似于上面的例子[传感器,样品,时间]).但是当我学习python的时候又回来了,我编写它的方式并不是你所说的漂亮.它也有一些基本的错误,比如轴标签不遵循与np.ndarray相同的共享内存规则.

在着手重写这件事并将其公之于众之前,我想知道那里是否有类似的东西.

python numpy

10
推荐指数
1
解决办法
2892
查看次数

标签 统计

numpy ×1

python ×1