如何将所有生成的排列保存到 Numpy 数组中?

我想生成所有生成的排列并将 itertools.product() 保存到一个数组中。目前,我正在尝试获取字符“ACGT”的所有长度为 2 的排列。当我尝试使用 numpy.asarray() 时,仅保存最终排列 (['T', 'T']),我认为这是因为每次在数组中都会覆盖该条目。我试过以下,


import itertools as it

import numpy as np


for x in it.product('ACGT', repeat=2):

    array = np.asarray(x)


print(array)

['T', 'T']

后来我想为更大的“单词”长度做这个,但是当我只期望 16 个结果时更容易测试。如果我使用的是 R,我会创建一个空向量并按顺序添加到向量中……但是,我仍在尝试掌握 Python 的窍门……请指教!


侃侃无极
浏览 88回答 1
1回答

胡说叔叔

这不起作用的原因是因为您为该结果创建了一个it.product(..)数组。不是为了整个结果。您可以使用以下方法创建这样的矩阵:np.array(list(it.product('ACGT', repeat=2)))或与meshgrid:dna = np.array(list('ACGT'))np.transpose(np.meshgrid(dna, dna)).reshape(-1,2)两者都产生一个如下所示的数组:array([['A', 'A'],&nbsp; &nbsp; &nbsp; &nbsp;['A', 'C'],&nbsp; &nbsp; &nbsp; &nbsp;['A', 'G'],&nbsp; &nbsp; &nbsp; &nbsp;['A', 'T'],&nbsp; &nbsp; &nbsp; &nbsp;['C', 'A'],&nbsp; &nbsp; &nbsp; &nbsp;['C', 'C'],&nbsp; &nbsp; &nbsp; &nbsp;['C', 'G'],&nbsp; &nbsp; &nbsp; &nbsp;['C', 'T'],&nbsp; &nbsp; &nbsp; &nbsp;['G', 'A'],&nbsp; &nbsp; &nbsp; &nbsp;['G', 'C'],&nbsp; &nbsp; &nbsp; &nbsp;['G', 'G'],&nbsp; &nbsp; &nbsp; &nbsp;['G', 'T'],&nbsp; &nbsp; &nbsp; &nbsp;['T', 'A'],&nbsp; &nbsp; &nbsp; &nbsp;['T', 'C'],&nbsp; &nbsp; &nbsp; &nbsp;['T', 'G'],&nbsp; &nbsp; &nbsp; &nbsp;['T', 'T']], dtype='<U1')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python