np.savetxt和多个数组

时间:2013-05-07 11:12:10

标签: python numpy

我有三个阵列:

a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.array([7,8])

我想做这样的事情:

np.savetxt('data.txt',np.array(a,b,c))

或只是

np.savetxt('data.txt',(a,b,c))

但我得到

 TypeError: float argument required, not numpy.ndarray

我通过做

之类的事情来规避这个问题
np.savetxt('data.txt',np.array([a[0],a[1],...,c[2]]))

但这不是很令人满意(特别是因为数组大小可以改变)并且还绘制了单个列中的所有值,而不是单个行和多个列(我想要的方式)。

问题似乎是阵列具有不同的维度。我理想情况下使用上面例子的输出类型是:

   1 2 3 4 5 6 7 8

有没有人知道更好的方法呢?

4 个答案:

答案 0 :(得分:4)

您也可以尝试将它们与numpy.r_

连接起来
np.savetxt('data.txt',np.r_[a,b,c])

答案 1 :(得分:1)

您的代码对我来说很合适:

$ python
Python 2.7.3 (default, Nov  7 2012, 22:09:53) 
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin
>>> import numpy as np
>>> a = np.array([1,2,3])
>>> b = np.array([4,5,6])
>>> c = np.array([7,8,9])
>>> np.savetxt('data.txt', (a,b,c))
>>> ^D
$ cat data.txt
1.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00
4.000000000000000000e+00 5.000000000000000000e+00 6.000000000000000000e+00
7.000000000000000000e+00 8.000000000000000000e+00 9.000000000000000000e+00

如果这不适合你,我想你的NumPy可能太老了。在这种情况下,这是另一种方式,它同时转换数据写入文件的方式,也可能感兴趣:

np.savetxt('data.txt', np.column_stack((a,b,c)))

答案 2 :(得分:0)

在发送到np.savetxt之前,我意识到一种可能的方法就是np.hstack((a,b,c))。在这种情况下,我不确定会有一个“更好”的方式。

答案 3 :(得分:0)

我认为这就是你想要的。

>>>a=np.array([1,2,3])
>>>b=np.array([4,5,6])
>>>c=np.array([7,8,9])
>>>np.savetxt('data.txt',(list(a)+list(b)+list(c)),fmt='%s',delimiter=',',newline=' ')
>>>!cat data.txt
1 2 3 4 5 6 7 8 9