字符串中位置处的字母对的频率 [英] Frequency of letters pairs at position in string

查看:0
本文介绍了字符串中位置处的字母对的频率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个文本文件,其中包含如下所示的字符串列表:

ALFLLNSYLTTL
DYLLHGDDKSLN
SLLADESADSHR
YMVNLNDELYNN

我需要用python编写一个脚本,它将确定每个字母在每个相应位置的频率。

例如,在第一个位置A、D、S和Y各出现一次,因此每个出现的频率为25%。然后,对于第三个位置,F、L和V各出现一次,其中L出现四次中的两次,因此频率为50%。

此外,我还需要对每个观察到的配对重复此操作。例如,AL在第一和第二位置的频率。

我是新手,不太了解可以帮助我完成此任务的许多语法和函数。

推荐答案

可以使用numpycollections.Counter按列统计字母出现的频率。使用numpy将文件内容转换为可使用多维切片的二维数组。并使用Counter统计每个唯一字母的出现频率。

import numpy as np

from collections import Counter

with open("text.txt", "r", encoding="utf-8") as text:
    lines = [list(line[:-1]) for line in text.readlines()]

lines = np.array(lines)

# for first question

for i in lines.shape[1]:

    counter = Counter(lines[:, i])

    for key in counter.keys():

        print key, counter[key] / lines.shape[0]

# for second question

counter = Counter(lines[:, 0:2])

print counter["AL"] / lines.shape[0]

这篇关于字符串中位置处的字母对的频率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆