行numpy数组保存为txt文件

时间:2012-03-05 10:55:31

标签: python numpy save

我有一个numpy数组

a = [1,2,3]

我想保存到.txt文件,使文件看起来像:

1 2 3

如果我使用numpy.savetxt,那么我会得到一个像:

这样的文件
1
2
3

我想应该有一个简单的解决方案,任何建议?

9 个答案:

答案 0 :(得分:38)

如果numpy >= 1.5,您可以执行以下操作:

  

#注意文件名用双引号括起来,
      #example" filename.txt"

numpy.savetxt("filename", a, newline=" ")

修改

几个长度相同的1D数组

a = numpy.array([1,2,3])
b = numpy.array([4,5,6])
numpy.savetxt(filename, (a,b), fmt="%d")

# gives:
# 1 2 3
# 4 5 6

几个可变长度的1D数组

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

with open(filename,"w") as f:
    f.write("\n".join(" ".join(map(str, x)) for x in (a,b)))

# gives:
# 1 2 3
# 4 5

答案 1 :(得分:16)

另一个答案是重新整形数组,使其具有尺寸(1, N),如下所示:

savetext(filename, a.reshape(1, a.shape[0]))

答案 2 :(得分:7)

import numpy
a = numpy.array([1,2,3])

with open(r'test.txt', 'w') as f:
    f.write(" ".join(map(str, a)))

答案 3 :(得分:2)

我发现接受的答案中的第一个解决方案对于仍然需要换行符的情况是有问题的。解决问题的最简单方法是:

numpy.savetxt(filename, [a], delimiter='\t')

答案 4 :(得分:2)

import numpy as np

a = [1,2,3]    
b = np.array(a).reshape((1,3))    
np.savetxt('a.txt',b,fmt='%d')

答案 5 :(得分:1)

我知道这很老了,但是这些答案都没有解决numpy根本不按行保存数组的根本问题。我发现这只班轮帮了我大忙:

b = np.matrix(a)
np.savetxt("file", b)

答案 6 :(得分:0)

非常简单: [1,2,3]

列表就像一列。

let data: CategoryModel = filteredData[indexPath.row]
let destinationVC = ListViewController(passedData: data)
self.present(destinationVC, animated: true, completion: nil)

如果您想要一个像行的列表,请双倍提示:

1
2
3

[[1, 2, 3]]  --->    1, 2, 3

最后:

[[1, 2, 3], [4, 5, 6]]  ---> 1, 2, 3
                             4, 5, 6

请注意,方括号,内部列表之间的逗号是外部列表的元素

答案 7 :(得分:0)

numpy.savetxt()方法具有几个值得注意的参数:

  

fmt:str或str序列,可选
  用于格式化数组中的数字,有关格式化的详细信息,请参阅文档

     

定界符:str,可选
  字符串或字符分隔列

     

换行符:str,可选
  字符串或字符分隔线。

让我们举个例子。我有一个大小为(M, N)的数组,它由(0,255)范围内的整数组成。为了按行保存数组并很好地显示它,我们可以使用以下代码:

import numpy as np

np.savetxt("my_array.txt", my_array, fmt="%4d", delimiter=",", newline="\n")

答案 8 :(得分:-1)

' '.join(a)

并将此输出写入文件。