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

Ami*_*ani 5 python csv numpy python-3.x

我正在尝试使用逗号分隔符使用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 = ",")
Run Code Online (Sandbox Code Playgroud)

我期望在标题ymin,ymax,xmin和xmax下有3行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
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

tel*_*tel 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)
Run Code Online (Sandbox Code Playgroud)

正如 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()
Run Code Online (Sandbox Code Playgroud)