我有三个阵列:
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
有没有人知道更好的方法呢?
答案 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