将二维数组读入Python的简单方法

时间:2016-07-18 19:23:59

标签: python

我的一个程序的输出是一个二维数组,例如

[[1,2,3],[4,5,6,7],[8,9]]

不确定的长度。我将此输出作为单行写入文件geno_matrix,然后我需要读入另一个程序进行分析和处理。我需要将其作为另一个二维数组读入另一个程序。

显然,,之后的分裂不会起作用,因为我最终会得到括号和个别数字的列表。如果我做

for line in geno_matrix:
    vec = line.rstrip('\n').split(',')

这将分隔所有条目(和括号)。我也试过

vec = line.rstrip('\n').split(',[')

返回一个列表

['[[1,2,3],[4,5,6,7],[8,9]]']

这样vec[0]就是字符串(不是数组)'[[1,2,3],[4,5,6,7],[8,9]]',这让我回到原来的分裂问题。使用Python阅读原始二维列表的最简单方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用ast的{​​{1}}功能:

literal_eval

会给你 from ast import literal_eval literal_eval('[[1,2,3], [4,5,6,7], [8,9]]') 作为数组。

答案 1 :(得分:0)

这样做会给你一个字符串列表,每个字符串代表一个向量:

"[[1,2,3],[4,5,6,7],[8,9]]".lstrip('[[').rstrip(']]').split(r'],[')

如此:

['1,2,3', '4,5,6,7', '8,9']

然后,您可以将单个字符串拆分为列表。