Python 中的序列矩阵

Matrix of sequence in Python

我有这个代码:

import random
def create_matrix(row, col):
    matrix = [["".join([random.choice("ATCG") for j in range(random.randint(1, 10))])
                  for _ in range(col)]
                  for _ in range(row)]
    return matrix
print(create_matrix(5, 4))

我得到了这个输出:

[['CGCT', 'CATGC', 'GCAACTATA', 'AA'], ['TTTGGGAGTA', 'GGGCTGAA', 'GTT', 'GCTCGC'], ['ATTGT', 'CCG', 'ACC', 'GTG']

如何获得相同的输出但排列在 3x4 矩阵中?类似这样,但使用之前的输出。

1   2   3   4
5   6   7   8
9   10  11  12
13  14  15  16
17  18  19  20

如果您不关心如何很好地间隔事物,一次打印每一行的简单 for 循环就可以了。 (Try Online)

import random
def create_matrix(row, col):
    matrix = [["".join([random.choice("ATCG") for j in range(random.randint(1, 10))])
                  for _ in range(col)]
                  for _ in range(row)]
    return matrix

matrix = create_matrix(5, 4)

for r in matrix:
    print(r)

输出:

['TTTG', 'TCT', 'ACTCGAGCTA', 'AA']
['TTAC', 'GT', 'T', 'CGGAC']
['GGCATGT', 'CCCTCCGTCC', 'GTCGAA', 'GTCATGTAG']
['TC', 'TTACGGTCT', 'TGGCAAAA', 'AGCCGGGGA']
['A', 'C', 'CT', 'AA']

如果使用 numpy,输出的格式会更好。但基本上你的是正确的,只是输出代码而已。

import numpy as np
print(np.array(create_matrix(5, 4)))

将产生以下输出:

[['CT' 'CA' 'CCAGTG']
 ['ACAGAA' 'AAT' 'C']
 ['ATCCAGAA' 'ATCGACCGTG' 'T']
 ['GACA' 'AACCGTAG' 'GCCACAGAC']
 ['TCAATT' 'TTTCAG' 'TACGCCTGA']]