首页 > 解决方案 > 将数据帧转换为具有 3d 形状 (x,y,z) 的数组

问题描述

我有一个如下的 DF,我想更改它的格式,以便我得到一个具有以下形状 (3,Y,2) 的数组,其中 3 表示有 3 个标签(ab 和 c),U 是行数对于每个标签(因为它们彼此之间有所不同,我没有指定它,它对我来说并不重要),并且 2 表示有 2 个特征/列(data_1 和 data_2)[[[1.09,1][5.0,3],[2.1,2][2.0,3],[1.9,4]]]。据我了解,它将是 3d 数组。我想将输出提供给 lstm 模型

label  data_1 data_2
a      1.09   1
b      2.1    2
a      5.0    3
b      2.0    3
c      1.9    4

标签: pythonpandasnumpygroup-byartificial-intelligence

解决方案


label如果您对其进行排序,则已作为您的索引给出..

df = df.sort_index(ascending=True)

然后...

df.to_numpy()
array([[1.09, 1.  ],
       [5.  , 3.  ],
       [2.1 , 2.  ],
       [2.  , 3.  ],
       [1.9 , 4.  ]])

例子:

df = pd.DataFrame({'label': {0: 'a', 1: 'b', 2: 'a', 3: 'b', 4: 'c'},
 'data_1': {0: 1.09, 1: 2.1, 2: 5.0, 3: 2.0, 4: 1.9},
 'data_2': {0: 1, 1: 2, 2: 3, 3: 3, 4: 4}})

df = df.set_index('label')

    data_1  data_2
label       
a   1.09    1
b   2.10    2
a   5.00    3
b   2.00    3
c   1.90    4

df = df.sort_index(ascending=True)
print(df.to_numpy())

[[1.09 1.  ]
 [5.   3.  ]
 [2.1  2.  ]
 [2.   3.  ]
 [1.9  4.  ]]

推荐阅读