我正在寻找一种在.txt文件中保存多个不同长度的1D numpy数组的好方法(每个数组都是一列)。我目前所有这些都放在python列表中。 np.columnstack和np.savetxt不适用于不同大小的数组,到目前为止我使用它的唯一方法是用零填充数组,使它们同样长。
我还找到了一个建议的解决方案,该解决方案使用Pandas中的DataFrames,然后将其保存到cvs put中,这会影响每行中没有条目的行中的格式。
答案 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