映射 类 到 Pandas 一种热编码
Map classes to Pandas one hot encoding
给定以下序列:
[我、Z、S、我、我、J、N、J、我]
并给出以下 Pandas 数据框:
char fricative nasal lateral labial coronal dorsal frontal
I 0 0 0 0 0 0 1
J 0 0 1 0 1 0 1
N 0 1 0 0 0 1 0
S 1 0 0 0 1 0 0
Z 1 0 0 0 1 0 0
如何将序列中的每个字符映射到数据框中相应的一个热向量?
使用:
df = df.set_index("char")
res = df.loc[sequence, :].to_numpy().tolist()
输出
[[0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0], [1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 1], [0, 0, 1, 0, 1, 0, 1], [0, 1, 0, 0, 0, 1, 0], [0, 0, 1, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 1]]
更新
如果您还想要活动类别,您可以使用布尔掩码直接索引到列中,如下所示:
df = df.set_index("char")
res = [df.columns[row.astype(bool)].tolist() for row in df.loc[sequence, :].to_numpy()]
print(res)
输出
[['frontal'], ['fricative', 'coronal'], ['fricative', 'coronal'], ['frontal'], ['frontal'], ['lateral', 'coronal', 'frontal'], ['nasal', 'dorsal'], ['lateral', 'coronal', 'frontal'], ['frontal']]
给定以下序列:
[我、Z、S、我、我、J、N、J、我]
并给出以下 Pandas 数据框:
char fricative nasal lateral labial coronal dorsal frontal
I 0 0 0 0 0 0 1
J 0 0 1 0 1 0 1
N 0 1 0 0 0 1 0
S 1 0 0 0 1 0 0
Z 1 0 0 0 1 0 0
如何将序列中的每个字符映射到数据框中相应的一个热向量?
使用:
df = df.set_index("char")
res = df.loc[sequence, :].to_numpy().tolist()
输出
[[0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0], [1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 1], [0, 0, 1, 0, 1, 0, 1], [0, 1, 0, 0, 0, 1, 0], [0, 0, 1, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 1]]
更新
如果您还想要活动类别,您可以使用布尔掩码直接索引到列中,如下所示:
df = df.set_index("char")
res = [df.columns[row.astype(bool)].tolist() for row in df.loc[sequence, :].to_numpy()]
print(res)
输出
[['frontal'], ['fricative', 'coronal'], ['fricative', 'coronal'], ['frontal'], ['frontal'], ['lateral', 'coronal', 'frontal'], ['nasal', 'dorsal'], ['lateral', 'coronal', 'frontal'], ['frontal']]