为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

侃侃无极 2022-06-02 11:24:06
我想生成所有生成的排列并将 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')


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信