Рассчитать расстояние между алфавитами в слове в питоне - PullRequest
0 голосов
/ 03 октября 2018

У меня есть набор данных "sc" с алфавитами и с координатами.Например,

alphabets   Y   X
q           3   1
w           3   2
e           3   3
r           3   4
t           3   5
y           3   6
u           3   7
i           3   8
o           3   9
...

Мне интересно вычислить расстояние между последовательными алфавитами в слове, используя теорему Пифагора.Например, для слова «que» это расстояние будет (6 + 4) = 10.

Я написал код на Python, но мой код выполняется почти 2 часа.У меня есть набор данных с более чем 500k строк.PS Слово может быть буквенно-цифровым.

Вот мой код:

def key_score(w):
    score=0
    for i in range(0,len(w)-1):
        t=pd.DataFrame(list(w[i:i+2].lower()))
        t.columns = ['alphabets']
        u = pd.merge(sc, t, how='inner', on=['alphabets'])
        v = np.sqrt(((u['X'][0] - u['X'][1])**2)+((u['Y'][0] - u['Y'][1])**2))
        score = score + v
    return score

Любая помощь будет высоко оценена!

1 Ответ

0 голосов
/ 03 октября 2018

Попробуйте это:

df = df.set_index('alphabet') #if alphabet is not in index
word = 'que'
np.sqrt(df.reindex([*word]).diff().abs().sum().pow(2).sum())

Вывод:

10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...