以下是插图代码
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阵列时,它不是一种聪明的方式。
答案 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
。