如何将 numpy 数组写入 csv 文件?
Posted
技术标签:
【中文标题】如何将 numpy 数组写入 csv 文件?【英文标题】:How to write a numpy array to a csv file? 【发布时间】:2014-08-30 20:10:59 【问题描述】:我想打开一个新的文本文件,然后将 numpy 数组保存到文件中。我写了这段代码:
foo = np.array([1,2,3])
abc = open('file'+'_2', 'w')
np.savetxt(abc, foo, delimiter=",")
我收到此错误:
TypeError Traceback (most recent call last)
<ipython-input-33-fea41927952b> in <module>()
2 model = cool
3 abc = open('file'+'_2', 'w')
----> 4 np.savetxt(abc, foo, delimiter=",")
/usr/local/lib/python3.4/site-packages/numpy/lib/npyio.py in savetxt(fname, X, fmt, delimiter, newline, header, footer, comments)
1071 else:
1072 for row in X:
-> 1073 fh.write(asbytes(format % tuple(row) + newline))
1074 if len(footer) > 0:
1075 footer = footer.replace('\n', '\n' + comments)
TypeError: must be str, not bytes
有谁知道怎么回事?
另外,我发现在终端中创建了一个名为file_2的空文件,但里面没有写任何东西。
编辑:我正在使用 Python3.4
【问题讨论】:
您使用的是什么版本的 Python?另外,不需要'file' + '_2'
——这只是让计算机生成一些你可以硬编码的东西:'file_2'
。
对我来说很好,你必须使用 python3
是的,我正在使用 python3
【参考方案1】:
看来您正在使用 Python3。因此,以二进制模式(wb
)打开文件,而不是文本模式(w
):
import numpy as np
foo = np.array([1,2,3])
with open('file'+'_2', 'wb') as abc:
np.savetxt(abc, foo, delimiter=",")
另外,关闭文件句柄abc
,以确保所有内容都写入磁盘。您可以使用with
-statement 来做到这一点(如上所示)。
正如 DSM 指出的那样,通常当您使用 np.savetxt
时,您不会想在文件中写入任何其他内容,因为这样做可能会干扰以后使用 np.loadtxt
。因此,与其使用文件句柄,不如简单地将文件名作为第一个参数传递给np.savetxt
:
import numpy as np
foo = np.array([1,2,3])
np.savetxt('file_2', foo, delimiter=",")
【讨论】:
除非您附加到预先存在的文件,否则我不确定是否有太多理由传递句柄。不妨将"file_2"
作为第一个参数传递给savetxt
,不是吗?以上是关于如何将 numpy 数组写入 csv 文件?的主要内容,如果未能解决你的问题,请参考以下文章
Pandas / Numpy - 如何获取和比较每列与每列的计数并写入 csv?
Python | Python保存高维数组array,Python用pandas将numpy保存csv文件,Python保存3维数组