Python 使用numpy.savetxt()将数据写入csv时缺少第一个条目

Python 使用numpy.savetxt()将数据写入csv时缺少第一个条目,python,python-3.x,csv,numpy,Python,Python 3.x,Csv,Numpy,我试图使用逗号分隔符使用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

我试图使用逗号分隔符使用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下有4列,共3行,但我缺少0.9。如中所示,my.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

我做错了什么?

当您调用带有输出文件路径的
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在评论中指出的那样,通过传入文件句柄而不是文件名,可以将
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()

尝试使用
header=
参数在
savetxt
调用中写入头-如果不想这样做,请传递
csvfile
文件对象,而不是文件名。非常感谢!我不知道header=参数。现在一切都很好:)啊,好的。我认为这与此有关,因为当我刚刚保存到没有标题的.csv时,它工作得很好(没有标题)。谢谢!