【问题标题】:Python One-hot encode every 2 characters in a textPython One-hot 对文本中的每 2 个字符进行一次编码
【发布时间】:2018-12-17 13:56:59
【问题描述】:

我有一个自定义字母,因为字典由 2 个字母键和相应的十进制值组成。我基本上想使用这个字母表对文本中的每 2 个字符进行编码。文本不能超出给定的字母,因此手动定义它是安全的。这是我到目前为止所做的。

values = {'00' : 0.0, '01': 1.0, '02':2.0, '03':3.0, '04':4.0, '05':5.0, '06':6.0, '07':7.0, '08':8.0, '09':9.0, '0a':10, '0b':11, '0c':12, '0d':13, '0e':14}

sample = '000a'
indexes = [values[ch:ch+2] for ch in range(0,len(sample),2)]

输出应该是 0.010

但是,运行此命令时出现 unhashable type: 'slice' 类型错误。

是否有另一种方法可以遍历文本中的每两个项目并将它们替换为字典中的值?或者对于超过 20G+ 的文本文件,这样做的最佳方式是什么?

【问题讨论】:

  • 你的意思是十六进制到整数的转换吗?
  • values 是一本字典。在您的列表组合中,您正在执行类似 values[0:2] 的操作 - 我认为您打算这样做:[values[sample[ch:ch+2]] for ch in range(0,len(sample),2)]。然后使用str.join 将列表元素连接成一个字符串。
  • @WillemVanOnsem 是的。它是十六进制到整数,但十六进制值被视为数据集中的字符串类型。
  • @pault 是的。成功了。

标签: python dictionary text slice one-hot-encoding


【解决方案1】:

这就是你在示例中描述的:

values = {'00' : 0.0, '01': 1.0, '02':2.0, '03':3.0, '04':4.0, '05':5.0, '06':6.0, '07':7.0, '08':8.0, '09':9.0, '0a':10, '0b':11, '0c':12, '0d':13, '0e':14}

sample = '000a'
indexes = ''.join(str(values[sample[ch:ch+2]]) for ch in range(0,len(sample),2))

我想你错过了 sample[:]values 键...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 2018-05-22
    • 2021-04-22
    • 2020-03-18
    • 2021-07-20
    • 2020-06-23
    • 1970-01-01
    相关资源
    最近更新 更多