3D numpy 重新排列

3D numpy recarray

# pre-allocate data cube
cube = np.empty((len(time_ix), len(data_ix), len(id_ix)))
cube[:] = np.NaN
# filling of cube
tix=3
idx=5
data = cube[tix,:,idx]

数据描述了该 ID 当天大致的 20 列的值

我正在创建一个多维数据集以便之后更好地分割我的数据,不幸的是,通过使用这样的语句,我可以用只有 float64 数据类型的数据填充我的第二个维度,这在存储方面变得非常昂贵. 我没有找到一种方法将上面提到的多维数据集声明为 rec 数组,这样我就可以适应 data_ix 维异构数据类型。

或者,有没有一种方法可以表示具有 2 个索引的 3d 数组(立方体),以便轻松切片(时间和 ID)以获得具有 pandas 数据帧的相应数据集?

IIUC:

使用二维记录数组

x = np.array([[(1.0, 2), (3.0, 4)], [(0.0, 1), (7.0, 5)]], dtype=[('x', '<f8'), ('y', '<i8')])

然后

x['x']

array([[1., 3.],
       [0., 7.]])

给出一个浮点数组而

x['y']

array([[2, 4],
       [1, 5]], dtype=int64)

给出一个整数数组