如何将字符序列映射为Pandas DataFrame中对应的独热编码向量
实现方法
核心思路是把DataFrame转换为「字符-特征向量」的映射结构,之后直接查表就能完成序列的批量映射:
- 将DataFrame的
char列设为索引,后续可以直接用字符作为key快速查询对应的特征行 - 遍历目标字符序列,逐个取出对应的特征向量即可,支持输出列表、NumPy数组两种常用格式
完整可运行代码
import pandas as pd import numpy as np # 构造你提供的特征映射表 df = pd.DataFrame({ 'char': ['I', 'J', 'N', 'S', 'Z'], 'fricative': [0, 0, 0, 1, 1], 'nasal': [0, 0, 1, 0, 0], 'lateral': [0, 1, 0, 0, 0], 'labial': [0, 0, 0, 0, 0], 'coronal': [0, 1, 0, 1, 1], 'dorsal': [0, 0, 1, 0, 0], 'frontal': [1, 1, 0, 0, 0] }) # 转换为字符到特征向量的映射表 char_feature_map = df.set_index('char') # 待转换的字符序列 target_seq = ['I', 'Z', 'S', 'I', 'I', 'J', 'N', 'J', 'I'] # 1. 输出为嵌套列表格式 result_list = [char_feature_map.loc[char].tolist() for char in target_seq] # 2. 输出为NumPy二维数组格式(适合后续模型输入) result_array = np.array(result_list)
输出示例
以result_list为例,转换后的结果和特征表完全对应:
[ [0, 0, 0, 0, 0, 0, 1], # I对应的特征 [1, 0, 0, 0, 1, 0, 0], # Z对应的特征 [1, 0, 0, 0, 1, 0, 0], # S对应的特征 [0, 0, 0, 0, 0, 0, 1], # I对应的特征 [0, 0, 0, 0, 0, 0, 1], # I对应的特征 [0, 0, 1, 0, 1, 0, 1], # J对应的特征 [0, 1, 0, 0, 0, 1, 0], # N对应的特征 [0, 0, 1, 0, 1, 0, 1], # J对应的特征 [0, 0, 0, 0, 0, 0, 1] # I对应的特征 ]
内容的提问来源于stack exchange,提问作者lima0
相关产品推荐
相关产品推荐

