Python 如何使用numpy对数据进行热编码?

Python 如何使用numpy对数据进行热编码?,python,arrays,csv,numpy,one-hot-encoding,Python,Arrays,Csv,Numpy,One Hot Encoding,假设我有一个数据集 sex age hours female 23 900 male 19 304 female 42 222 ... 如果我使用np.loadtxt或np.genfromtxt,我可以使用转换器为sex列中的每个分类数据赋值。有没有办法在加载过程中创建一个热列?如果没有,我应该在哪里完成这项工作?看看熊猫。获取假人功能 使用pandas,您可以传递类别数据类型(在列中以便宜的方式加载): 一旦你有了一个类别,你就可以使用get\u dummies

假设我有一个数据集

sex    age hours
female 23  900
male   19  304
female 42  222
      ...

如果我使用np.loadtxt或np.genfromtxt,我可以使用转换器为sex列中的每个分类数据赋值。有没有办法在加载过程中创建一个热列?如果没有,我应该在哪里完成这项工作?

看看熊猫。获取假人功能


使用pandas,您可以传递类别数据类型(在列中以便宜的方式加载):


一旦你有了一个类别,你就可以使用
get\u dummies

In [21]: pd.get_dummies(df.sex)
Out[21]:
   female  male
0       1     0
1       0     1
2       1     0

In [22]: pd.get_dummies(df.sex.cat.codes)
Out[22]:
   0  1
0  1  0
1  0  1
2  1  0

下面是一种
genfromtxt
方法:

import numpy as np

def hot(s):
    rec = np.genfromtxt(s, dtype="i8,i4,i4", skip_header=1,
                        converters={0:{b'male':1<<32, b'female':1}.__getitem__})
    return rec.view(np.int32).reshape((-1, 4))

print(hot(<your_file_name>))
将numpy导入为np
def热:
rec=np.genfromtxt(s,dtype=“i8,i4,i4”,跳过页眉=1,

converters={0:{b'male':1我要求使用一个热编码的主要原因是为了能够将其放入keras。keras是否接受这一点并将其转换为一个热向量?@user184074从简单的代码中可以看出这一点,但您始终可以提取代码
df.sex.cat.codes
。使用
pd.get\u dummies()
相反,没有一种方法可以读懂get\u dummies,要想有效地读懂它,你需要先读懂。也就是说,然后读懂pd.get\u dummies(df.sex.cat.code)
。不,你不需要第二步。这根本不是必需的
import numpy as np

def hot(s):
    rec = np.genfromtxt(s, dtype="i8,i4,i4", skip_header=1,
                        converters={0:{b'male':1<<32, b'female':1}.__getitem__})
    return rec.view(np.int32).reshape((-1, 4))

print(hot(<your_file_name>))