【问题标题】:Missing first entry when writing data to csv using numpy.savetxt()使用 numpy.savetxt() 将数据写入 csv 时缺少第一个条目
【发布时间】:2019-05-21 12:39:16
【问题描述】:

我正在尝试使用 numpy.savetxt 使用逗号分隔符将 numpy 数组写入 .csv,但是它缺少第一个条目(第 1 行第 1 列),我不知道为什么。

我对 Python 编程相当陌生,这可能只是我调用 numpy.savetxt 的方式或者我定义数组的方式的问题。无论如何,这是我的代码:

import numpy as np
import csv

# preparing csv file
csvfile = open("np_csv_test.csv", "w")
columns = "ymin, ymax, xmin, xmax\n"
csvfile.write(columns)
measurements = np.array([[0.9, 0.3, 0.2, 0.4],
                     [0.8, 0.5, 0.2, 0.3],
                     [0.6, 0.7, 0.1, 0.5]])

np.savetxt("np_csv_test.csv", measurements, delimiter = ",")

我希望在标题 ymin、ymax、xmin 和 xmax 下有 3 行的四列,我做到了,但我缺少 0.9。如,我的 .csv 的第 2 行第 1 列是空的,在记事本中我得到:

ymin, ymax, xmin, xmax
,2.999999999999999889e-01,2.000000000000000111e-01,4.000000000000000222e-01
8.000000000000000444e-01,5.000000000000000000e-01,2.000000000000000111e-01,2.999999999999999889e-01
5.999999999999999778e-01,6.999999999999999556e-01,1.000000000000000056e-01,5.000000000000000000e-01

我做错了什么?

【问题讨论】:

  • 尝试使用header= 参数在savetxt 调用中写入标头 - 如果您不想这样做,则传递csvfile 文件对象而不是文件名。
  • 非常感谢!我不知道 header= 参数。现在一切正常,花花公子:)

标签: python python-3.x csv numpy


【解决方案1】:

当您使用输出文件的路径调用np.savetxt 时,它会尝试覆盖任何现有文件,这不是您想要的。以下是您可以使用列标题编写所需文件的方法:

import numpy as np

# preparing csv file
columns = "ymin, ymax, xmin, xmax"
measurements = np.array([[0.9, 0.3, 0.2, 0.4],
                     [0.8, 0.5, 0.2, 0.3],
                     [0.6, 0.7, 0.1, 0.5]])

np.savetxt("np_csv_test.csv", measurements, delimiter = ",", header=columns)

正如 Andy 在 cmets 中所指出的,您可以通过传入文件句柄而不是文件名来让 np.savetxt 附加到现有文件。因此,获取所需文件的另一种有效方法是:

import numpy as np
import csv

# preparing csv file
csvfile = open("np_csv_test.csv", "w")
columns = "ymin, ymax, xmin, xmax\n"
csvfile.write(columns)
measurements = np.array([[0.9, 0.3, 0.2, 0.4],
                     [0.8, 0.5, 0.2, 0.3],
                     [0.6, 0.7, 0.1, 0.5]])

np.savetxt(csvfile, measurements, delimiter = ",")
# have to close the file yourself in this case
csvfile.close()

【讨论】:

  • 啊,好吧。我认为这与此有关,因为当我刚刚保存到没有标题的 .csv 时,它工作得很好(只是没有标题)。非常感谢!
猜你喜欢
  • 2023-01-30
  • 1970-01-01
  • 2023-02-07
  • 2018-05-21
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2015-01-29
  • 2017-03-13
相关资源
最近更新 更多