我想生成所有生成的排列并将 itertools.product() 保存到一个数组中。目前,我正在尝试获取字符“ACGT”的所有长度为 2 的排列。当我尝试使用 numpy.asarray() 时,仅保存最终排列 (['T', 'T']),我认为这是因为每次在数组中都会覆盖该条目。我试过以下,import itertools as itimport numpy as npfor x in it.product('ACGT', repeat=2): array = np.asarray(x)print(array)['T', 'T']后来我想为更大的“单词”长度做这个,但是当我只期望 16 个结果时更容易测试。如果我使用的是 R,我会创建一个空向量并按顺序添加到向量中……但是,我仍在尝试掌握 Python 的窍门……请指教!
1 回答
胡说叔叔
TA贡献1804条经验 获得超8个赞
这不起作用的原因是因为您为该结果创建了一个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'],
['A', 'C'],
['A', 'G'],
['A', 'T'],
['C', 'A'],
['C', 'C'],
['C', 'G'],
['C', 'T'],
['G', 'A'],
['G', 'C'],
['G', 'G'],
['G', 'T'],
['T', 'A'],
['T', 'C'],
['T', 'G'],
['T', 'T']], dtype='<U1')
添加回答
举报
0/150
提交
取消