numpy来加速字符和子字符串计数



这里有人试图使用numpy来计算字符串字符和子字符串吗?例如:

for string in string_list:
c = np.array(list(string))
counter = Counter(c)

计数1个字符是可以的,但对于子字符串,有什么函数可以加快大数据的速度?

对于ex,我有这个:

k = 1
test_1mer = Counter()
for name, seq in parse_multi_fasta_file_compressed_or_not('test/test_random.faa'):
test_1mer.update(get_kmers(seq, k))

Fasta文件(test_random.faa(:

>header
SGFAVAGBHNAAMMAAM

我使用这个代码来计算65GB文件中的子字符串。要花很多小时才能完成。所以我认为numpy可以稍微加快速度。通过一些功能上的改进来尝试改进一点。在此处输入链接描述

初始化numpy数组不是最快的操作,而且似乎不需要任何特定于numpy的工具;我建议将字符串本身传递给Counter:
In [192]: strings = ['awerawe', 'awerawer', '23432wefeaf', 'awefpi32']
...: sum(map(Counter, strings), start=Counter())
Out[192]: 
Counter({'a': 6,
'w': 6,
'e': 7,
'r': 3,
'2': 3,
'3': 3,
'4': 1,
'f': 3,
'p': 1,
'i': 1})

如果你想计算单词,你只需将strings传递给Counter:

In [193]: strings = ['awerawe', 'awerawer', '23432wefeaf', 'awefpi32']
...: Counter(strings)
Out[193]: Counter({'awerawe': 1, 'awerawer': 1, '23432wefeaf': 1, 'awefpi32': 1})

最新更新