将数据帧转换为具有 3d 形状 (x,y,z) 的数组
Posted
技术标签:
【中文标题】将数据帧转换为具有 3d 形状 (x,y,z) 的数组【英文标题】:transform a dataframe into an array with 3d shape (x,y,z) 【发布时间】:2021-10-22 21:45:58 【问题描述】:我有一个如下的 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
【问题讨论】:
【参考方案1】:如果您对其进行排序,则已将 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. ]]
【讨论】:
以上是关于将数据帧转换为具有 3d 形状 (x,y,z) 的数组的主要内容,如果未能解决你的问题,请参考以下文章