4

我有三个数组:

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

4 回答 4

4

您也可以尝试将它们连接起来numpy.r_

np.savetxt('data.txt',np.r_[a,b,c])
于 2013-05-07T11:59:38.140 回答
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)))
于 2013-05-07T11:26:11.917 回答
0

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

于 2013-05-07T11:40:35.167 回答
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
于 2013-05-07T15:01:14.140 回答