我有一个包含字符串列表的文本文件,如:
ALFLLNSYLTTL
DYLLHGDDKSLN
SLLADESADSHR
YMVNLNDELYNN
我需要在python中编写一个脚本,它将确定每个相应位置中每个字母的频率。
例如,在第一个位置A,D,S和Y每个出现一次,因此每个的频率为25%。然后对于第3个位置F,L和V各发生,L在4次中出现2次,因此频率为50%。
另外,我需要对每个观察对进行频率重复。例如,第1和第2位的AL频率。
我是python的新手,并不知道很多可以帮助我完成这项任务的语法和功能。
答案 0 :(得分:0)
您可以使用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]