【发布时间】:2009-10-10 20:22:06
【问题描述】:
在 Python 中,我需要生成一个 dict,它将一个字母映射到该字母的预定义“one-hot”表示。举例来说,dict 应该如下所示:
{ 'A': '1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0',
'B': '0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0', # ...
}
字母表中的每个字母都有一位(表示为一个字符)。因此,每个字符串将包含 25 个零和一个 1。1 的位置由字母表中相应字母的位置决定。
我想出了一些代码来生成这个:
# Character set is explicitly specified for fine grained control
_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
n = len(_letters)
one_hot = [' '.join(['0']*a + ['1'] + ['0']*b)
for a, b in zip(range(n), range(n-1, -1, -1))]
outputs = dict(zip(_letters, one_hot))
有没有更高效/更简洁/更 Pythonic 的方式来做同样的事情?
【问题讨论】: