Чтение матрицы из .txt файла

Мой код:
with open('m.txt') as file: file = file.read() q = file.replace(' ', '') # убираю лишние пробелы f1 = q[0:8] # в переменную f1 сохраняю первую строку f2 = q[9:16] # в f2 - вторую строку f3 = q[17:24] f4 = q[25:32] f5 = q[33:40] f6 = q[41:48]
В правильном ли я направлении иду и как быть дальше?
Отслеживать
12.5k 7 7 золотых знаков 19 19 серебряных знаков 48 48 бронзовых знаков
задан 28 окт 2018 в 14:29
309 2 2 золотых знака 9 9 серебряных знаков 18 18 бронзовых знаков
f = open(‘m.txt, ‘r’) matrix = [line.replace(«\n», «»).split() for line in f]
28 окт 2018 в 14:34
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
1 2 3 4 5 6 7 8 8 7 9 6 5 4 1 2 1 2 0 1 4 8 7 5 4 5 2 3 6 9 8 7 0 1 2 3 0 1 2 5 2 1 4 5 6 9 8 7 1 2 5 4 7 8 5 2 10 1 2 4 5 6 9 8
In [5]: with open('matrix.txt') as f: . matrix = [list(map(int, row.split())) for row in f.readlines()] . In [6]: matrix Out[6]: [[1, 2, 3, 4, 5, 6, 7, 8], [8, 7, 9, 6, 5, 4, 1, 2], [1, 2, 0, 1, 4, 8, 7, 5], [4, 5, 2, 3, 6, 9, 8, 7], [0, 1, 2, 3, 0, 1, 2, 5], [2, 1, 4, 5, 6, 9, 8, 7], [1, 2, 5, 4, 7, 8, 5, 2], [10, 1, 2, 4, 5, 6, 9, 8]] In [7]: matrix.reverse() In [8]: matrix Out[8]: [[10, 1, 2, 4, 5, 6, 9, 8], [1, 2, 5, 4, 7, 8, 5, 2], [2, 1, 4, 5, 6, 9, 8, 7], [0, 1, 2, 3, 0, 1, 2, 5], [4, 5, 2, 3, 6, 9, 8, 7], [1, 2, 0, 1, 4, 8, 7, 5], [8, 7, 9, 6, 5, 4, 1, 2], [1, 2, 3, 4, 5, 6, 7, 8]]
Ну и запись в другой файл соответственно:
In [14]: with open('output.txt', 'w') as f: . for row in matrix: . f.write(' '.join(map(str, row)) + '\n')
Как записать матрицу в файл python
Изучаю Python.
ОС Winows 10 (64)
Python 3.6.1
NumPu 1.12.1 ставил через pip.
При работе с модулем NumPy столкнулся с такой проблемой:
При записи массива в текстовый файл (5 строк, 2 столбца):
fhou = open(ouf, 'wt') np.savetxt(fhou, MyMatr, fmt='% .5f')
Выдается сообщение вида:
TypeError: Mismatch between array dtype (‘float64’) and format specifier (‘% .5f % .5f’)
В сети нашел ответ (годичной давности), из которого следует, что файл следует открывать в бинарной моде или перейти на NumPy 1.11.1:
fhou = open(ouf, 'wb') np.savetxt(fhou, MyMatr, fmt='% .5f')
Попробовал. Да, работает, но массив пишется строкой, без разбивки на столбцы (как бы хотелось).
Возможно кто то решал этот вопрос?
Поделитесь информацией.
И да, в NumPy 1.11.1 это будет работать?
Регистрация: 23.10.2010
Сообщений: 2,287
Редактировать свой пост видимо поздно.
ОС Winows 10 (64)
Перепроверил и переустановил Python.
Была установлена 32-бит версия. Установил 64-бит.
Теперь:
Python 3.6.1 (64-bit)
NumPu 1.13.0 (64-bit)
При записи матрицы (например, массив 3х3) в текстовый файл, если файл открыт как текстовый:
fhou = open(ouf, 'wt') np.savetxt(fhou, MyMatr)
Как и прежде выдается сообщение вида:
TypeError: Mismatch between array dtype (‘float64’) and format specifier (‘%.18e %.18e %.18e’)
Так получается, что мой массив имеет тип float64, и этот тип не совпадает с заданным по умолчанию.
Но если изменить тип данных на другой — такая же фигня.
Ответ в сетях годичной давности.
В нем рекомендуют открывать файл в бинарной моде.
fhou = open(ouf, 'wb') np.savetxt(fhou, MyMatr)
И это по-прежнему работает в новых условиях.
Но дело в том, что данные записываются в одну строку, даже если задать параметр delimiter = ‘\n’.
И тут дело не в том, что можно писать через write() и формировать нужный вид в текстовом файле. Это просто и получается нормально.
Но вот в NumPy есть и такой вариант, когда можно инициализировать массив, прочитав данные из форматированного текстового файла. Например:
MyMatr1 = np.loadtxt(fh_i, dtype=np.float, ndmin = 1) print(MyMatr1)
И это работает хорошо.
Но при чтении такого файла надо заранее знать из чего же он был сделан .
Возможно, что я сильно не .
Возможно, что этот метод, хотя и позиционируется как для сохранения в текстовом файле, так и не должен работать?
В этом я сильно сомневаюсь. Но я новичок и .
Запись массива NumPy в файл CSV
Часто перед аналитиками данных и исследователями встает задача сохранения результатов в формате, который удобен для чтения и дальнейшего использования.
Алексей Кодов
Автор статьи
7 июля 2023 в 16:48
Часто перед аналитиками данных и исследователями встает задача сохранения результатов в формате, который удобен для чтения и дальнейшего использования. Одним из таких форматов является CSV (Comma-Separated Values) — текстовый формат, который используется для представления табличных данных. Каждая строка в таком файле — это строка таблицы, а столбцы разделяются запятой.
Рассмотрим типичный пример. Предположим, что был произведен расчет или анализ данных, и результаты этих действий хранятся в двумерном массиве NumPy. Теперь эти данные нужно сохранить в файле CSV для дальнейшего использования, например, для анализа в других программах.
Для записи массива NumPy в файл CSV можно использовать функцию numpy.savetxt . Эта функция сохраняет двумерный массив в текстовый файл. В качестве первого аргумента функция принимает имя файла, в который будет произведена запись. Вторым аргументом является массив, который нужно записать. Также можно указать разделитель (по умолчанию пробел), который будет использоваться для отделения значений в строке.
Пример записи массива в CSV-файл:
import numpy as np # Создаем двумерный массив array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Записываем массив в файл CSV np.savetxt("array.csv", array, delimiter=",")
После выполнения этого кода в корневой директории проекта появится файл array.csv , содержащий данные из массива array . Если открыть файл, то увидим следующее:
1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00 4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00 7.000000000000000000e+00,8.000000000000000000e+00,9.000000000000000000e+00
Если требуется записать данные в более читаемом формате, можно использовать параметр fmt функции numpy.savetxt , который позволяет указать формат данных. Например, %d для целых чисел и %.2f для чисел с плавающей точкой с двумя знаками после запятой:
np.savetxt("array.csv", array, delimiter=",", fmt="%d")
Теперь в файле array.csv хранятся данные в следующем виде:
1,2,3 4,5,6 7,8,9
Итак, функция numpy.savetxt является удобным инструментом для сохранения двумерных массивов NumPy в файлы CSV.
Матрицы в Python и массивы NumPy
Матрица — это двухмерная структура данных, в которой числа расположены в виде строк и столбцов. Например:

Эта матрица является матрицей три на четыре, потому что она состоит из 3 строк и 4 столбцов.
Обновлено: 2023-06-17 20:46:41 Вадим Дворников автор материала
Матрицы в Python
Python не имеет встроенного типа данных для матриц. Но можно рассматривать список как матрицу. Например:
A = [[1, 4, 5], [-5, 8, 9]]
Этот список является матрицей на 2 строки и 3 столбца.

Обязательно ознакомьтесь с документацией по спискам Python, прежде чем продолжить читать эту статью.
Давайте посмотрим, как работать с вложенным списком.
A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]] print("A =", A) print("A[1] =", A[1]) # вторая строка print("A[1][2] =", A[1][2]) # третий элемент второй строки print("A[0][-1] =", A[0][-1]) # последний элемент первой строки column = []; # пустой список for row in A: column.append(row[2]) print("3rd column 1" data-ab-test="post_related" data-ab-key="yarpp">Как работают массивы в Python?