Отсутствует первая запись при записи данных в csv с помощью numpy.savetxt () - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь записать пустой массив в .csv, используя numpy.savetxt, используя разделитель запятых, однако отсутствует первая запись (строка 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 = ",")

Я ожидал четыре столбца с 3 строками под заголовками ymin, ymax, xmin и xmax, и я сделал, но я пропустил 0,9.Как в строке 2 столбца 1 моего .csv пусто, а в блокноте я получаю:

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

Что я делаю не так?

1 Ответ

0 голосов
/ 21 декабря 2018

Когда вы вызываете 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)

Как указал Энди в комментариях, вы можете получить 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...