字符串中位置处的字母对的频率 [英] Frequency of letters pairs at position in string
本文介绍了字符串中位置处的字母对的频率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个文本文件,其中包含如下所示的字符串列表:
ALFLLNSYLTTL
DYLLHGDDKSLN
SLLADESADSHR
YMVNLNDELYNN
我需要用python编写一个脚本,它将确定每个字母在每个相应位置的频率。
例如,在第一个位置A、D、S和Y各出现一次,因此每个出现的频率为25%。然后,对于第三个位置,F、L和V各出现一次,其中L出现四次中的两次,因此频率为50%。此外,我还需要对每个观察到的配对重复此操作。例如,AL在第一和第二位置的频率。
我是新手,不太了解可以帮助我完成此任务的许多语法和函数。
推荐答案
可以使用numpy
和collections.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屋!
查看全文