问题描述
# 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)
给出一个整数数组