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