将数据帧转换为具有 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) 的数组的主要内容,如果未能解决你的问题,请参考以下文章

如何将稀疏的 pandas 数据帧转换为 2d numpy 数组

延伸的3D阵列

U,V坐标如何工作?

unity3d把 x的欧拉角赋给y啥作用

将“二次”曲面拟合为3D中的数据点

CSS进阶知识点--3D转换及perspective 属性