numpy.savetxt 写入一维数组的问题

10 投票
2 回答
9524 浏览
提问于 2025-04-16 19:07

我正在尝试使用numpy的savetxt函数来生成一些文件,以便作为其他软件的输入。

我想把一个这样的数组写入文本文件:

a=np.array([1,2,3,4,...])
a.shape=>(1,n)

文件的格式应该是这样的:

1,2,3,4,...

当我输入这个命令:

np.savetxt('test.csv',a,fmt='%d',delimiter=',')

我得到的文件看起来像这样:

1

2

3

4

...

对于二维数组,savetxt的表现和我预期的一样,但我无法把一维数组的所有值都放在同一行上。

有没有什么建议呢?

谢谢!

编辑:

我解决了这个问题。使用np.atleast_2d(a)作为savetxt的输入,可以强制savetxt把数组写成一行,而不是一列。

2 个回答

1

如果你只想保存一个一维数组,其实用这种方法会快很多:

>>> x = numpy.array([0,1,2,3,4,5])
>>> ','.join(map(str, x.tolist()))
'0,1,2,3,4,5'
13

有几种方法可以解决这个问题。最接近你现在做法的是:

np.savetxt('test.csv', a[None], fmt='%d', delimiter=',')

也就是说,在你的数组后面加上切片 [None],这样就能把它变成一个只有一行的二维数组。

撰写回答