【问题标题】:How to write a numpy array to a csv file?如何将 numpy 数组写入 csv 文件?
【发布时间】: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

标签: python arrays csv numpy python-3.4


【解决方案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,不是吗?
猜你喜欢
  • 2023-03-31
  • 2016-09-27
  • 1970-01-01
  • 2012-06-07
  • 2019-01-29
  • 2018-07-09
  • 2020-05-10
  • 2022-06-22
  • 1970-01-01
相关资源
最近更新 更多