Чтение матрицы из файла.
Здравствуйте! Мне нужно прочитать матрицу из файла input.txt на языке python3. Матрица состоит из char’ов и вот ее пример:
A A . B B . A . . B A A . . B A . . . B A A . B B на вход еще подаются два числа n*m (размерность матрицы) Пробовал гуглить . Ничего не нашел. Кто знает как реализовать чтение матрицы пожалуйста помогите.
levon12341
08.10.16 12:23:09 MSK
подписался, тоже интересно.. сталкнулся с такой же проблемой когда вдруг оказалось нужно прочитать матрицу из файла и ни как.
anonymous
( 08.10.16 12:31:44 MSK )
Ответ на: комментарий от anonymous 08.10.16 12:31:44 MSK

ты больной ублюдок если не знаешь не пиши
levon12341
( 08.10.16 12:34:13 MSK ) автор топика
Ответ на: комментарий от anonymous 08.10.16 12:31:44 MSK

Подписавшийся анонимус. Смотри в личке решение.
greenman ★★★★★
( 08.10.16 12:34:16 MSK )
Ответ на: комментарий от greenman 08.10.16 12:34:16 MSK

скинешь мне решение??
levon12341
( 08.10.16 12:36:02 MSK ) автор топика

Vovanano ★
( 08.10.16 12:36:18 MSK )
Ответ на: комментарий от greenman 08.10.16 12:34:16 MSK
Спасибо, для моих задач подходит. Кинул 30$ на кошелёк, как договаривались.
anonymous
( 08.10.16 12:37:07 MSK )
Ответ на: комментарий от greenman 08.10.16 12:34:16 MSK
да, спасибо! решение работает! матрицы прямо НА_УРА теперь читаются!
только исправил xrange на range — в тройке его нет
anonymous
( 08.10.16 12:37:40 MSK )
Ответ на: комментарий от levon12341 08.10.16 12:36:02 MSK
anonymous
( 08.10.16 12:39:26 MSK )

Читай по строкам, пользуйся .split() для разделения по пробелам.
evilface ★★
( 08.10.16 13:05:00 MSK )

Для начала считай файл в массив текстовых строк.
Затем по формуле s = (2*m)-1 ты получишь позицию символа в строке.
Но лучше сделай следующим образом. Могу показать пример на gambas, но думаю для питона ты сможешь его адаптировать
Dim FileStrings As String[] ' Динамический массив строк Dim MATRIX As New Byte[][] ' Массив массивов. Двумерный массив для результата Dim a As Integer ' счётчик Dim b As Intrger Dim e As Intrger Dim m As Integer ' предел счётчика Dim sm As Integer ' предельная строка Dim t As String * 1 FileStrings = LoadDataTextFile() ' Загрузка строк из файла в массив MATRIX.Resize(FilesStrings.Count) ' Размер матрицы по количеству строк sm = MATRIX.Max For a=0 To sm Matrix[a] = New Byte[] m = Len(FileStrings[a]) Matrix[a].Resize(m/2) b = 1 For e=0 To Matrix[a].Max MATRIX[a][e] = Asc(Mid(FileStrings[a],b,1)) b=b+2 Next Next
Чтение матрицы из .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 золотых знаков 18 18 серебряных знаков 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')
Прочитать матрицы из файла и умножить их
Программному обеспечению необходимо выполнить действия: умножить матрицы, хранящиеся в двух разных файлах. Т. е. при запуске программы из файлов нужно прочитать две матрицы, а затем выполнить умножение. Сохраните результат в новом файле.
Срочно нужно решение!
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Прочитать матрицу из файла и умножить
Мне нужно вычислить произведение двух матриц. У меня есть 2 файла с двумя разными целыми числами.
Прочитать значение с xml файла умножить на цифру и записать
Всем доброго времени суток В общем такая задача. Есть файл в формате xml. Нужно в нем найти.
Прочитать из текстового файла символы, вычисть из их кодов 8 а затем умножить на 2
Написать программу: Прочитать из текстового файла символы, вычисть из их кодов 8 а затем умножить.

Прочитать из файла значение k-ой строки матрицы
Как изменить программу, чтобы одномерный массив получал значение k-ой строки матрицы без.

Записать матрицы в файл и прочитать их из файла.
Доброго времени суток. Помогите пожалуйста решить!! В файл t1 записать две матрицы a и.
301 / 211 / 112
Регистрация: 03.12.2016
Сообщений: 409
Azeekon, уберите тут ненужный блок Умножение матриц с numpy или Умножение матриц без функций
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
import sys, os import numpy as np file_matrix_1 = os.path.join(sys.path[0], 'matrix_1.txt') # Файл ввода file_matrix_2 = os.path.join(sys.path[0], 'matrix_2.txt') # Файл вывода file_matrix_out = os.path.join(sys.path[0], 'matrix_out.txt') # Файл вывода matrix_1 = [] matrix_2 = [] with open(file_matrix_1, 'r') as f: lines = f.readlines() for line in lines: matrix_1.append(list(map(int, line.rstrip().split()))) # Читаем первую матрицу with open(file_matrix_2, 'r') as f: lines = f.readlines() for line in lines: matrix_2.append(list(map(int, line.rstrip().split()))) # Читаем вторую матрицу if not matrix_1 or not matrix_2: print('Нет данных') exit() if len(matrix_1[0]) != len(matrix_2): print('Эти матрицы умножить нельзя') exit() # Умножение матриц с numpy (удалить вместе со строкой import numpy as np) c = np.array(matrix_1) d = np.array(matrix_2) out = c.dot(d) print(out) # ---------------------------------------------------------------------------------------- # Умножение матриц без функций out = [] for k, ma in enumerate(matrix_1): out.append([]) for i in range(len(matrix_2[0])): el = 0 for j, mb in enumerate(matrix_2): el += ma[j] * mb[i] out[k].append(el) print(out) # -------------------------------------- # Вывод результатов в файл with open(file_matrix_out, 'w') as f: for i in out: f.write(' '.join(map(str, i)) + '\n')
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как из файла прочитать размерность матрицы и её содержимое?
Помогите пожалуйста, ничего не нашёл! Как из файла прочитать размерность матрицы и её содержимое?
Прочитать из файла 3 матрицы, затем провести с ними операции транспонирования
Доброго времени суток. У меня проблема. Нужно прочитать с файла 3 матрицы, затем провести с ними.

Прочитать файл в обратном порядке т.е. встать в конец файла и прочитать до начальной позиции
подскажите пожалуйста как можно прочитать файл в обратном порядке т.е. стать в конец файла и.
Найти минимальный элемент в каждом столбце матрицы, каждый столбец матрицы умножить на него
Дан двумерный массив a, размером (n×m). Найти минимальный элемент в каждом столбце матрицы. Затем.
Как считать матрицы из файла?
Здравствуйте, подскажите пожалуйста вот есть у меня текстовый файл, в нём есть допустим вот две матрицы, над матрицей находиться её размерность, 4 и 3. Задача у меня стоит такая что в текстовом файле находятся квадратные матрицы, целочисленные, порядка n, и нужно преобразовать файл, удалив из каждой матрицы элементы побочной диагонали. И я вот не совсем понимаю. Считываем вот первую строку «4» теперь 4 раза по 4 элемента читаем. А как считать следующую матрицу?
const N = 4; var f1: text; j,i,k,l,endline : integer; begin assign(f1,'D:\in.txt'); reset(f1); while not Eoln(f1) do begin Readln(f1,endline); //Считываем 4 раза по 4 элемента inc(j); end; close(f1); end.
Ведь на следующей итерации будет 1, подскажите пожалуйста заранее благодарю за ответ.
4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
3
1 2 3
1 2 3
1 2 3
- Вопрос задан более трёх лет назад
- 678 просмотров
Комментировать
Решения вопроса 1

program ChangeMatrix; const FileIn = 'C:\Users\admin\Documents\in.txt'; FileOut = 'C:\Users\admin\Documents\out.txt'; var fin, fout: Text; n: integer; matrix: array of array of string; row, col: integer; src: string; target: array of string; counter: integer; function Split(sep: string; source: string): array of string; var i: integer; position: integer; begin result := Nil; SetLength(result, n); for i := 0 to n - 1 do begin position := Pos(sep, source); if position > 0 then begin result[i] := Copy(source, 1, position - 1); Delete(source, 1, position + Length(sep) - 1); end else result[i] := source; end; end; function Join(sep: string; source: array of string): string; var i: integer; begin result := source[0]; for i := 1 to n - 1 do result := Concat(result, sep, source[i]); end; begin Assign(fin, FileIn); Reset(fin); Assign(fout, FileOut); Rewrite(fout); While not EoF(fin) do begin // Читаем размер матрицы Readln(fin, n); // Обнуляем матрицу matrix := Nil; // Задаем размеры матрицы SetLength(matrix, n); for row := 0 to n - 1 do SetLength(matrix[row], n); // Читаем значения и заполняем матрицу for row := 0 to n - 1 do begin Readln(fin, src); target := Split(' ', src); for col := 0 to n - 1 do matrix[row][col] := target[col]; begin end; end; // Удаляем элементы побочной диагонали counter := 0; row := n - 1; col := 0; while counter < n do begin matrix[row][col] := '*'; Dec(row); Inc(col); Inc(counter); end; // Записываем результат в файл Writeln(fout, n); for row := 0 to n - 1 do begin Writeln(fout, Join(' ', matrix[row])); end; end; Close(fout); Close(fin); end.
С перезаписью исходного файла:
program ChangeMatrix; const DataFile = 'C:\Users\Jonathan\Documents\in.txt'; var fdata: Text; n: integer; matrix: array of array of string; change: array of string; cursor: integer; row, col: integer; src: string; target: array of string; counter: integer; function Split(sep: string; source: string): array of string; var i: integer; position: integer; begin result := Nil; SetLength(result, n); for i := 0 to n - 1 do begin position := Pos(sep, source); if position > 0 then begin result[i] := Copy(source, 1, position - 1); Delete(source, 1, position + Length(sep) - 1); end else result[i] := source; end; end; function Join(sep: string; source: array of string): string; var i: integer; begin result := source[0]; for i := 1 to n - 1 do result := Concat(result, sep, source[i]); end; begin cursor := 0; Assign(fdata, DataFile); Reset(fdata); While not EoF(fdata) do begin // Читаем размер матрицы Readln(fdata, n); // Обнуляем матрицу matrix := Nil; // Задаем размеры матрицы SetLength(matrix, n); SetLength(change, Length(change) + n + 1); change[cursor] := IntToStr(n); Inc(cursor); for row := 0 to n - 1 do SetLength(matrix[row], n); // Читаем значения и заполняем матрицу for row := 0 to n - 1 do begin Readln(fdata, src); target := Split(' ', src); for col := 0 to n - 1 do matrix[row][col] := target[col]; begin end; end; // Удаляем элементы побочной диагонали counter := 0; row := n - 1; col := 0; while counter < n do begin matrix[row][col] := '*'; change[cursor + row] := Join(' ', matrix[row]); Dec(row); Inc(col); Inc(counter); end; Inc(cursor, n); end; Close(fdata); Assign(fdata, DataFile); Rewrite(fdata); // Записываем результат в файл for row := 0 to cursor - 1 do begin Writeln(fdata, change[row]); end; Close(fdata); end.
