将1D不同大小的numpy数组按列保存到txt文件

时间:2015-12-12 06:05:22

标签: python arrays numpy

以下是插图代码

from pylab import *

 a = array([1,2,3])
 b = array([4,5])

我想要test.out有什么

1 4
2 5
3

之前,人们已经将不同大小的1D numpy数组存储解决方案给行txt文件:Saving numpy array to txt file row wise

然后如何以列方式保存它们?

当然可以使用 像这样的三个数组

 a = array([1,4])
 b = array([2,5])
 c=array([3])

并按行保存 但是当存在大量1D阵列时,它不是一种聪明的方式。

2 个答案:

答案 0 :(得分:1)

使用pandas的简单方法:

import pandas as pd

d  = dict(a=a, b=b)
df = pd.DataFrame.from_dict(d, orient='index').transpose().fillna('')

#   a  b
#0  1  4
#1  2  5
#2  3   

并写入csv(您不想编写索引或列):

df.to_csv('file.csv', index=False, header=False)

答案 1 :(得分:1)

https://stackoverflow.com/a/34242952/901925中的答案可以适用于此案例

3个不同长度的阵列;可能是名单

In [715]: heights=np.array([40,50])
In [716]: widths=np.array([60,65,70])
In [717]: yrs=np.array([1995,1996,1997,1998])

使用itertools.zip_longest来迭代它们,其中fillvalue缺少值:

In [718]: for xyz in itertools.zip_longest(yrs,widths,heights,fillvalue=''):
    print('%-12s,%-12s,%-12s'%xyz)
   .....:     
1995        ,60          ,40          
1996        ,65          ,50          
1997        ,70          ,            
1998        ,            ,  

写入文件使用:

In [719]: with open('temp.txt','w') as f:
    for xyz in itertools.zip_longest(yrs,widths,heights,fillvalue=''):
        f.write('%-12s,%-12s,%-12s\n'%xyz)
   .....:         
In [720]: cat temp.txt
1995        ,60          ,40          
1996        ,65          ,50          
1997        ,70          ,            
1998        ,            ,  

(PY3中为itertools.zip_longest,Py2中为izip_longest