擅长:python、mysql、java
<p>使用<code>numpy.random</code>模块,该模块提供矢量化采样和视图转换:</p>
<pre><code>>>> n, k = 20, 10
>>>
>>> np.random.choice((*fastadict['seq1'],), replace=True, size=(n * k,)).view(f'U{k}')
array(['GCAGAATGCT', 'GGAGGTGCAT', 'CACCATCATT', 'CGTGGTGTAC',
'AGAATATCGG', 'GATTTTGGCC', 'GAACATAAGC', 'CGGGCCAAGC',
'GTTGGTGTTT', 'GACCAATAAC', 'ACCCGTAGCC', 'GAATTCCCGG',
'AACAGGTCAC', 'AGACAAGCAC', 'CACACTTGCC', 'CGTTTGTAAT',
'CTAGCCCTCG', 'CTCGACATAT', 'GATGATTAGA', 'TCTATCCTCA'],
dtype='<U10')
</code></pre>
<p>Python 2版本:</p>
^{pr2}$
<p>速度:</p>
<pre><code>>>> from time import perf_counter
>>> n, k = 100, 1000000
>>> t0 = perf_counter(); x = np.random.choice((*fastadict['seq1'],), replace=True, size=(n * k,)).view(f'U{k}');t1 = perf_counter()
>>> t1-t0
1.29188625497045
</code></pre>