You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python/Numpy中切分字符串序列并统计各片段的出现频率

实现方案

核心逻辑为先按指定长度无重叠(可自定义为重叠)切分所有字符串,收集所有片段后调用numpy的np.unique接口完成频次统计,最后按对齐格式输出即可。

完整可运行代码

import numpy as np

# 输入参数
str_list = ['ABGD','HDIW','ABHD']
split_length = 2  # 自定义切分长度

# 1. 按指定长度切分所有字符串
all_fragments = []
for s in str_list:
    # 步长等于切分长度即无重叠切分,需重叠可修改步长为1
    for i in range(0, len(s), split_length):
        fragment = s[i:i+split_length]
        # 若需要过滤长度不足切分长度的尾部片段,打开下一行注释即可
        # if len(fragment) != split_length: continue
        all_fragments.append(fragment)

# 2. numpy统计频次
frag_array = np.array(all_fragments)
# 若需要按出现顺序输出而非字典序,增加return_index参数后排序即可,代码见下方说明
unique_frags, count_list = np.unique(frag_array, return_counts=True)

# 3. 类网格格式输出,每个元素占4位左对齐
print(''.join(f"{frag:<4}" for frag in unique_frags))
print(''.join(f"{cnt:<4}" for cnt in count_list))

自定义调整说明

  • 重叠切分:将切分循环的range(0, len(s), split_length)修改为range(0, len(s)-split_length+1, 1)即可实现滑动窗口重叠切分
  • 按原始出现顺序输出:将统计部分代码替换为如下内容,即可保留片段首次出现的顺序:
unique_frags, first_idx, count_list = np.unique(frag_array, return_index=True, return_counts=True)
# 按首次出现位置排序
sorted_order = first_idx.argsort()
unique_frags = unique_frags[sorted_order]
count_list = count_list[sorted_order]

修改后输出效果和你给出的示例完全一致。


内容的提问来源于stack exchange,提问作者Morvolis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:57:03