字符串中位置的字母对频率

2024-04-26 07:57:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,其中有一个字符串列表,如:

ALFLLNSYLTTL
DYLLHGDDKSLN
SLLADESADSHR
YMVNLNDELYNN

我需要用python编写一个脚本,它将决定每个位置中每个字母的频率。你知道吗

例如,在第一个位置,A、D、S和Y各出现一次,因此各频率为25%。第三个位置F、L和V各出现一次,L出现四次中的两次,因此频率为50%。你知道吗

此外,我需要重复这个频率为每一个观察到的对。例如,在第一和第二位置的AL频率。你知道吗

我是python新手,不太懂语法和函数来帮助我完成这个任务。你知道吗


Tags: 函数字符串脚本列表字母语法频率al
1条回答
网友
1楼 · 发布于 2024-04-26 07:57:22

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

相关问题 更多 >