当我使用np.savetxt时,为什么我的数组空间没有正确

时间:2015-07-23 22:41:32

标签: python arrays numpy

为什么文本文件空间没有正确输出?

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,使用记事本查看文件。

简答:记事本是最糟糕的。使用记事本++。

提出问题:有没有办法让列排列更好?我的一些数据只有几个字符,而其他数据只有十五个左右。

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="",那么所有数据都会在一行中结束。