如何在numpy savetxt中使用fmt来对齐每列中的信息

时间:2015-07-24 00:19:37

标签: python numpy

我发现其他人使用了fmt,并试图将其用于我的目的。但是,我不明白,尽管在这里阅读:http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html。我希望我的数据集中在我正在保存的文本文件的每一列中(或者它看起来以某种方式组织起来,老实说,只要列以某种方式对齐,我就不在乎)。现在我将第一行左对齐,然后我的数据之间有一个均匀的空间。由于我的数组中的每个条目的长度不同,因此会导致数据偏移。如何对齐每列中的条目?

import numpy as np
my_list =['str123456789', 'str2', 'str3']
my_list2=[1,2458734750,3]
my_array=np.array(my_list)
my_array2=np.array(my_list2)
combined=np.column_stack([my_array,my_array2])
np.savetxt('test_file_name.txt', combined, fmt='{0: ^{1}}'.format("%s", 12))

它在entires之间提供了大量的空间,但我希望条目对齐。

左或右对齐很好。一条评论建议使用{0:< {1}}或{0:> {1}}代替{0:^ {1}};但是,这并没有区别对齐我的数据。

我猜测.format("%s",12)使每个字符串有12个字符(当没有字符时添加空格字符),导致对齐问题。但是,如果我写.format("%s"),我会收到错误。 fmt ='%s',正在工作,但又没有对齐。

1 个答案:

答案 0 :(得分:4)

你可以在没有str.format的情况下完成:

np.savetxt('test_file_name.txt', combined, fmt="%-12s")

输出:

str123456789 1           
str2         2458734750  
str3         3           

-左对齐,12是宽度。您需要指定宽度长于或长于数组中最长元素的宽度。

为了解释您自己的尝试,您使用^将数据居中,最小宽度为12个字符,但不会对齐每列。