Я использую numpy.savetxt() для записи массива numpy в файл csv, но файл, который сгенерирован, очень большой. Например, если я создаю массив нулей:numpy.savetxt() выводит очень большие файлы
import numpy
test = numpy.zeros((10000,10000), dtype=numpy.float32)
numpy.savetxt('C:/datatest.csv',test,delimiter=',')
Я бы ожидать, что файл будет около 10000 * 10000 * 4 байт (400 MB) большой. (Это также то, что возвращает test.nbytes
). Однако файл имеет размер 2,3 ГБ. Есть ли причина для большого размера файла? Я просмотрел документацию numpy, похоже, не существует способа указать тип переменной при записи в файл. Я пробовал другие типы файлов/разделителей, но получал те же результаты.
Следует подчеркнуть, что независимо от формата 'savetxt' сохраняет данные в форме * string *. Кажется, что OP полагает, что каждое значение float32 будет сохранено как 4 байта в некотором двоичном формате, но это не так. – BrenBarn
Также очень важно, чтобы все нули в этом файле нуждались в 1 или 2 байтах, в зависимости от кодировки. Для всего числа float32 требуется 4 байта. (все 18 цифр) – sebix
Спасибо за ответ, изменив параметр fmt, уменьшил размер! – samuelschaefer