将不同大小的numpy数组的python列表保存到.txt-file

时间:2017-07-25 22:48:31

标签: python list pandas numpy

我正在寻找一种在.txt文件中保存多个不同长度的1D numpy数组的好方法(每个数组都是一列)。我目前所有这些都放在python列表中。 np.columnstack和np.savetxt不适用于不同大小的数组,到目前为止我使用它的唯一方法是用零填充数组,使它们同样长。

我还找到了一个建议的解决方案,该解决方案使用Pandas中的DataFrames,然后将其保存到cvs put中,这会影响每行中没有条目的行中的格式。

1 个答案:

答案 0 :(得分:0)

直接文件写入可能是最简单的

In [233]: alist=[[1,2,3,4],[.2,.4,1.2],['a','b','c','d','e']]
In [234]: import itertools
In [235]: list(itertools.zip_longest(*alist))
Out[235]: 
[(1, 0.2, 'a'),
 (2, 0.4, 'b'),
 (3, 1.2, 'c'),
 (4, None, 'd'),
 (None, None, 'e')]
In [236]: 
In [236]: list(itertools.zip_longest(*alist,fillvalue=''))
Out[236]: [(1, 0.2, 'a'), (2, 0.4, 'b'), (3, 1.2, 'c'), (4, '', 'd'), ('', '', 'e')]

现在只需编写格式化的行(替换file.write进行打印):

In [238]: for line in itertools.zip_longest(*alist,fillvalue=''):
     ...:     print('%5s, %5s, %5s'%tuple(line))
     ...:     
    1,   0.2,     a
    2,   0.4,     b
    3,   1.2,     c
    4,      ,     d
     ,      ,     e