将一个热编码数据从数组转换为数字序列

Transform OneHot-encoded data from array to sequence of numbers

我试图使用 OneHot 对不同类别的列进行编码并将编码保存在字典中,因为我想在具有相同类别但顺序不同的第二列上使用这些精确编码。在字典中,值对保存为

{'name1': array([0., 0., 1., 0., 0.]), 'name2': array([0., 1., 0., 0., 0.]), ...}

并且此表格不能用于例如正在申请

StandardScalar.fit.transform()

给他们。有没有办法更改这些值以适应下面的 OneHotEncoding 的“经典”形式?

{'name1': 0 0 1 0 0 , 'name2': 0 1 0 0 0 , ...}

感谢您的帮助!

将它们转换为 DataFrame df 也可以转换为分类一个热数组 y:

import numpy as np
import pandas as pd
a={'name1': np.array([0., 0., 1., 0., 0.]), 'name2': np.array([0., 1., 0., 0., 0.])}
df=pd.DataFrame(a)
y=np.array(df)

df内容为:

   name1  name2
0    0.0    0.0
1    0.0    1.0
2    1.0    0.0
3    0.0    0.0
4    0.0    0.0

y内容为:

array([[0., 0.],
       [0., 1.],
       [1., 0.],
       [0., 0.],
       [0., 0.]])

因此,您可以使用其中任何一个