【问题标题】:Numpy savetxt saves 1D array as columnNumpy savetxt 将一维数组保存为列
【发布时间】:2019-03-22 16:09:00
【问题描述】:

我使用 loadtxt 来初始化数组。

source = np.loadtxt('source.txt').astype(int)

之后我在函数中使用了这个数组,它的主体是:

file = open('johnson.txt', 'ab')
first = increase(np.argsort(source[0]))
np.savetxt(file, first, delimiter='-', fmt='%i')
file.close()

因此,在 txt 文件中我应该有这个:

7-1-3-6-2-4-8-5

但我有这个:

7
1
3
6
2
4
8
5

我必须以二进制模式打开文件,因为我需要将另一行附加到文件中。那么,我该如何解决呢? 谢谢!

【问题讨论】:

  • 试试np.savetxt(file, np.atleast_2d(first), delimiter='-', fmt='%i')np.savetxt(file, first.reshape(-1, 1), delimiter='-', fmt='%i')
  • np.atleast_2d(first) 工作完美!谢谢!

标签: python arrays file numpy


【解决方案1】:

savetxt 迭代输入数组,并将每个“行”写入新行。对于典型的二维数组,这将是一行。但是对于一个将是一个元素的一维数组。

因此,将您的写入更改为保存二维数组:

np.savetxt('test.txt', [first], delimiter=..., fmt=...)

假设first 是一维数组,那么np.array([first]) 是1 行2d,first[None,:] 也可以工作(或reshape)。

要追加行,请以“a”追加模式打开文件。 'wb'` 二进制文件没有帮助。

【讨论】:

  • 完美答案,谢谢!这对我来说变得更清楚了。
猜你喜欢
  • 1970-01-01
  • 2014-04-28
  • 2018-07-21
  • 1970-01-01
  • 2018-12-02
  • 2019-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多