Перейти к содержимому

Как записать матрицу в файл python

  • автор:

Как записать матрицу / 2D-массив в текстовый файл python

Используя Python, мне нужно записать 2d матрицу в файл, чтобы позволить следующей команде легко ее прочитать:

Проблема

Я пытался file.write(str(matrix)) , и он пишет это хорошо, но это не так, как мне нужно, чтобы потом извлечь данные.

У меня есть следующее:

Ожидаемое решение

Что я хочу, чтобы файл был;

3 ответа

Вы можете преобразовать отдельные строки вашей матрицы в строки, разделенные пробелами, и записать их в текстовый файл.

Вы можете использовать numpy.savetxt:

Если вам просто нужно записать данные и позже получить их из программы на Python, ограничение «текстового» файла только усложнит ситуацию.

Это потому, что Python поставляется с модулем pickle , который может сериализовать все виды объектов, которые имеют смысл быть сериализуемыми, и впоследствии извлекать их из файла без проблем.

В этом случае, если ваша «матрица» находится в переменной с этим именем, весь код, который вам нужен:

И получить его позже:

Теперь, если вам нужно, чтобы текст читался и читался человеком, а ваши матрицы просто В списках внутри списков с числовыми элементами и без произвольных объектов модуль json будет работать точно так же и создавать файл, который не только читается человеком, но и может быть понят под множеством других языков и библиотек:

выкатываете собственный код

Конечно, для целей обучения и для полного понимания программы возможность написать собственную матрицу и прочитать ее обратно — бесценное упражнение. Просто имейте в виду, что это полезно для обучения и тренировок, но не хорошо, если это всего лишь малая часть проблемы реального мира — это будет изобретением колеса в деталях, и вам следует использовать один из методов, описанных выше.

Для DIY сначала плохая новость: файл, а также текстовый файл могут принимать все, что вы пишете в него. Таким образом, вы должны определить соглашения о том, какие символы вы будете использовать для указания размера матрицы, если он не всегда фиксирован в 3×3, и позаботиться об этом при записи и чтении. (обратите внимание, что вы можете просто добавить вывод repr для своей матрицы, используя eval для ее содержимого при чтении — для литеральных значений Python это будет работать, но тогда вы можете просто использовать pickle или json) ,

Поскольку вы задали желаемый результат в вопросе, это облегчает задачу: мы будем использовать числа, разделенные пробелами, по одной строке файла для каждой строки в матрице.

Это просто вопрос создания внешней матрицы, чтения строки из файла, вызова .split для нее, чтобы у вас была одна строка, содержащая каждое число, сопоставить каждый из этих токенов через «int» и создать новый список, это одна из строк.

То есть шаг за шагом:

Или с использованием выразительности Python и списочного понимания, один и тот же код в одной строке:

Запись файла

Записать такой файл так же просто, как перебирать элемент за элементом вашей матрицы и выводить его на диск:

Это добавляет дополнительный «» в конце каждой строки, но есть несколько подходов, чтобы избежать этого. Одним из простых способов было бы составить строку как строку, используя методы форматирования строки Python.

Как записать матрицу / 2D-массив в текстовый файл python

Используя Python, мне нужно записать 2-мерную матрицу в файл, чтобы следующая команда могла легко ее прочитать:

Проблема

я пытался file.write(str(matrix)) и он пишет это нормально, но не кладет его так, как мне нужно, чтобы позже извлечь данные.

У меня есть следующее:

Ожидаемое решение

Что я хочу иметь в файле;

3 ответа

Вы можете преобразовать отдельные строки вашей матрицы в строки, разделенные пробелами, и записать их в текстовый файл.

Если вам просто нужно записать данные и получить их позже из программы Python, ограничение «текстового» файла только усложняет ситуацию.

Это потому, что Python поставляется с pickle модуль, который может сериализовать все виды объектов, которые имеют смысл сериализовать, и беспрепятственно извлекать их позже из файла.

В этом случае, если ваша «матрица» находится на переменной с таким именем, весь необходимый вам код:

И чтобы получить его позже:

Теперь, если вам нужно, чтобы он был текстовым и удобочитаемым, а ваши матрицы представляют собой просто списки в списках с числовыми элементами, а не произвольные объекты, json Модуль будет работать точно так же и создавать файл, который не только читается человеком, но и может быть понят на множестве других языков и библиотек:

развертывание собственного кода

Конечно, для учебных целей и получения настоящего твердого понимания программы возможность написать свою собственную матрицу и прочитать ее — бесценное упражнение. Просто имейте в виду, что это полезно для обучения и тренировок, но плохо, если это всего лишь малая часть проблемы реального мира — это будет изобретать велосипед вместо детали, и вам следует использовать один из описанных выше методов.

Для DIY сначала плохие новости: файл, как и текстовый файл, может принимать все, что вы в него пишете. Таким образом, вы должны изложить соглашения о том, какие символы вы будете использовать для обозначения размера матрицы, если он не всегда фиксируется в 3×3, и позаботьтесь об этом при записи и чтении. (обратите внимание, что вы можете просто repr вывод для вашей матрицы, использование eval на его содержимое при чтении — для буквальных значений Python это сработает, но тогда вы можете просто использовать pickle или json).

Поскольку вы написали желаемый результат в вопросе, это упрощает: мы будем использовать числа, разделенные пробелами, по одной строке файла для каждой строки в матрице.

Это просто вопрос создания внешней матрицы, чтения строки из файла, вызова .split на нем, чтобы у вас была одна строка, содержащая каждое число, сопоставьте каждый из этих токенов через «int» и создайте новый список, который является одной из строк.

То есть пошагово:

Или, используя выразительность Python и понимание списков, тот же код в одной строке:

Запись файла

Написать такой файл так же просто, как взаимодействовать элемент за элементом вашей матрицы и выводить его на диск:

В конце каждой строки будет записан дополнительный символ » «, но есть несколько способов избежать этого. Один из самых простых способов — составить строку как строку с использованием методов форматирования строки Python.

Примеры работы с текстовыми файлами

В данной теме представлены примеры записи и чтения информации для текстовых файлов.

Содержание

  • 1. Чтение/запись списка, содержащего n целых чисел
  • 2. Чтение/запись списка, содержащего строки
  • 3. Чтение/запись кортежа, содержащего объекты чисел с плавающей запятой
  • 4. Чтение/запись кортежа содержащего разнотипные объекты
  • 5. Чтение/запись словаря
  • 6. Чтение/запись двумерной матрицы целых чисел, представленной в виде списка
  • 7. Чтение/запись множества, которое содержит целые числа
  • 8. Чтение/запись данных разных типов: список и кортеж

Поиск на других ресурсах:

1. Чтение/запись списка, содержащего n целых чисел

В примере демонстрируются следующие операции:

  • создание списка из 10 случайных чисел;
  • сохранение списка в текстовом файле;
  • чтение из файла в новый список с целью контроля.

Текст программы следующий:

Результат работы программы

2. Чтение/запись списка, содержащего строки

При чтении/записи строк не нужно реализовывать дополнительные преобразования из одного типа в другой, так как данные из файла читаются в виде строк.

Результат работы программы

3. Чтение/запись кортежа, содержащего объекты чисел с плавающей запятой

Пример демонстрирует запись и чтение кортежа, который содержит объекты чисел с плавающей запятой.

Результат работы программы

Вид файла myfile5.txt

4. Чтение/запись кортежа содержащего разнотипные объекты

В случае, если кортеж содержит объекты разных типов при записи/чтении важно придерживаться последовательности этапов конвертирования объектов в нужный тип. Ниже приведен пример записи и чтения кортежа, который содержит объекты целого, логического и строчного типов.

Результат выполнения программы

5. Чтение/запись словаря

Словарь также можно записывать в файл. В данном примере записывается и читается словарь, который содержит перечень номеров дней недели и их названий. Для облегчения чтения данных каждый элемент словаря размещается в отдельной строке.

Результат работы программы

Вид файла myfile6.txt

6. Чтение/запись двумерной матрицы целых чисел, представленной в виде списка

В примере демонстрируется запись и чтение двумерной матрицы целых чисел размерностью 3*4.

Результат работы программы

Вид файла myfile8.txt

7. Чтение/запись множества, которое содержит целые числа

В примере демонстрируется возможный вариант сохранения множества в текстовом файле

Результат работы программы

Вид файла myfile7.txt

8. Чтение/запись данных разных типов: список и кортеж

Чтобы записать в текстовый файл данные разных базовых типов нужно последовательно записать данные одного типа, затем другого типа. При считывании таких данных нужно придерживаться такого самого порядка чтобы не нарушить полученную структуру данных.

В примере демонстрируется последовательная запись в файл списка и кортежа. При чтении придерживается такая же последовательность: сначала читается список, затем кортеж. Список включает строки. Кортеж содержит вещественные числа. Чтобы облегчить работу по распознаванию формата файла, каждый записываемый (читаемый) элемент размещается в отдельной строке файла.
Поскольку список и кортеж могут содержать разное количество элементов, то в файл записываются их размерности.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *