字符串的频率在字符串中的位置

时间:2017-06-29 02:40:28

标签: python frequency

我有一个包含字符串列表的文本文件,如:

ALFLLNSYLTTL
DYLLHGDDKSLN
SLLADESADSHR
YMVNLNDELYNN

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

例如,在第一个位置A,D,S和Y每个出现一次,因此每个的频率为25%。然后对于第3个位置F,L和V各发生,L在4次中出现2次,因此频率为50%。

另外,我需要对每个观察对进行频率重复。例如,第1和第2位的AL频率。

我是python的新手,并不知道很多可以帮助我完成这项任务的语法和功能。

1 个答案:

答案 0 :(得分:0)

您可以使用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]