为什么文本文件空间没有正确输出?
import numpy as np
my_list =['str1', 'str2', 'str3']
my_list2=[1,2,3]
print(my_list)
[' str1',' str2',' str3']已打印。
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="%s")
print(combined)
印刷品给出:
[['str1' '1']
['str2' '2']
['str3' '3']]
该文件显示str1 1str2 2str3 3
。
我想要它说:
str1 1
str2 2
str3 3
运行Windows 8.1,使用记事本查看文件。
简答:记事本是最糟糕的。使用记事本++。
提出问题:有没有办法让列排列更好?我的一些数据只有几个字符,而其他数据只有十五个左右。
答案 0 :(得分:3)
如果你打印数组你将看不到正常行为npry的逗号,如果你在打印repr
时使用print repr(np.array([1, 2, 3]))
或者从python shell或ipython运行它而不打印它将还会显示您在scipy文档中看到的repr
。
无论你看到repr输出还是格式化输出都没有任何区别,数组形状不会改变,因此与你的问题无关:
In [13]: a
Out[13]:
array(['1', '2', '3'], # repr
dtype='|S1')
In [14]: b
Out[14]:
array(['2', '3', '4'], # repr
dtype='|S1')
In [15]: print(a) # str
['1' '2' '3']
In [16]: print(b) # str
['2' '3' '4']
In [17]: print(np.column_stack((a,b)))
[['1' '2']
['2' '3']
['3' '4']]
如果您遇到column_stack
的问题,则不是因为打印时阵列的外观。
您的输出也将完全符合您的要求:
str1 1
str2 2
str3 3
我看到你在文件中获得str1 1str2 2str3 3
的唯一方法是,如果你实际使用了newline=""
,那么所有数据都会在一行中结束。