In Python, I need to generate dictone that matches a letter with a predefined " one-hot " representation of this letter. As an illustration, dictshould look like this:
{ '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',
}
There is one bit (represented as a character) per letter of the alphabet. Therefore, each line will contain 25 zeros and one 1. The position 1is determined by the position of the corresponding letter in the alphabet.
I came up with code that generates this:
# 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))
Is there a more efficient / cleaner / more pythonic way to do the same?
source
share