如何将 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章

python:将numpy数组写入csv文件

Python,如何将长度不等的嵌套列表写入csv文件?

Python:将 wav 文件写入 numpy 浮点数组

如何将简单的几何形状写入 numpy 数组

Pandas / Numpy - 如何获取和比较每列与每列的计数并写入 csv?

Python | Python保存高维数组array,Python用pandas将numpy保存csv文件,Python保存3维数组