[Python] 알파벳을 인덱스로 구성하기

먼저 다음과 같은 문장이 있다고 하자.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sample = 'I will go.'
sample = 'I will go.'
sample = 'I will go.'

위의 문장을 구성하는 알파벳 중에서 중복되지 않는 고유한 알파벳만을 추출하면..

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
uniq_chars = set(sample) # {'w', ' ', 'o', 'i', 'l', '.', 'g', 'I'}
uniq_chars = set(sample) # {'w', ' ', 'o', 'i', 'l', '.', 'g', 'I'}
uniq_chars = set(sample) # {'w', ' ', 'o', 'i', 'l', '.', 'g', 'I'}

위의 추출된 결과는 set이므로 이를 list로 만들면..

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
idx2char = list(uniq_chars) # ['w', ' ', 'o', 'i', 'l', '.', 'g', 'I']
idx2char = list(uniq_chars) # ['w', ' ', 'o', 'i', 'l', '.', 'g', 'I']
idx2char = list(uniq_chars) # ['w', ' ', 'o', 'i', 'l', '.', 'g', 'I']

인덱스 값을 Value로, 해당 인덱스의 알파벳을 Key로 구성된 데이터는 다음처럼 얻을 수 있다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
char2idx = {c: i for i, c in enumerate(idx2char)} # {'w': 0, ' ': 1, 'o': 2, 'i': 3, 'l': 4, '.': 5, 'g': 6, 'I': 7}
char2idx = {c: i for i, c in enumerate(idx2char)} # {'w': 0, ' ': 1, 'o': 2, 'i': 3, 'l': 4, '.': 5, 'g': 6, 'I': 7}
char2idx = {c: i for i, c in enumerate(idx2char)} # {'w': 0, ' ': 1, 'o': 2, 'i': 3, 'l': 4, '.': 5, 'g': 6, 'I': 7}

이제 처음 문장(sample 변수)을 인덱스 값으로 구성된 list는 다음과 같다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sample_idx = [char2idx[c] for c in sample] # [7, 1, 0, 3, 4, 4, 1, 6, 2, 5]
sample_idx = [char2idx[c] for c in sample] # [7, 1, 0, 3, 4, 4, 1, 6, 2, 5]
sample_idx = [char2idx[c] for c in sample] # [7, 1, 0, 3, 4, 4, 1, 6, 2, 5]

Numpy의 axis에 따른 연산

넘파이의 sum 함수를 예로 axis의 값에 따라 어떻게 연산이 처리되는지를 시각화해 본다.

먼저 x는 다음과 같다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
x = np.array([
[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
])
x = np.array([ [ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], ])
x = np.array([
    [ 1,  2,  3,  4],
    [ 5,  6,  7,  8],
    [ 9, 10, 11, 12],
])

위의 x를 행렬로 시각화 하면 다음과 같다.

이 x에 대한 axis=0으로 한 sum 함수에 대한 코드는 다음과 같으며 그 결과는 바로 다음의 그림과 같다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
np.sum(x, axis=0)
np.sum(x, axis=0)
np.sum(x, axis=0)

이 x에 대한 axis=1으로 한 sum 함수에 대한 코드는 다음과 같으며 그 결과는 바로 다음의 그림과 같다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
np.sum(x, axis=1)
np.sum(x, axis=1)
np.sum(x, axis=1)