Как сохранить входные данные в нескольких матрицах в Python? - PullRequest
1 голос
/ 10 марта 2019

У меня есть текстовый файл с несколькими матрицами, подобными этим:

4 5 1
4 1 5
1 2 3
[space]
4 8 9
7 5 6
7 4 5
[space]
2 1 3
5 8 9
4 5 6

Я хочу прочитать этот входной файл в Python и сохранить его в нескольких матрицах, таких как:

matrixA = [...] # first matrix
matrixB = [...] # second matrix

и так далее. Я знаю, как читать внешние файлы в Python, но не знаю, как разделить этот входной файл на несколько матриц, как я могу это сделать?

Спасибо

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Вы можете написать код, подобный этому:

all_matrices = []  # hold matrixA, matrixB, ...
matrix = []  # hold current matrix
with open('file.txt', 'r') as f:
    values = line.split()
    if values:  # if line contains numbers
        matrix.append(values)
    else:  # if line contains nothing then add matrix to all_matrices
        all_matrices.append(matrix)
        matrix = []
# do what every you want with all_matrices ...
0 голосов
/ 10 марта 2019

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

file = open('matrix_list.txt').read() #Open the File
matrix_list = file.split("\n\n") #Split the file in a list of Matrices
for i, m in enumerate(matrix_list): 
    matrix_list[i]=m.split("\n") #Split the row of each matrix
    for j, r in enumerate(matrix_list[i]): 
        matrix_list[i][j] = r.split() #Split the value of each row

Это приведет к следующему формату:

[[['4', '5', '1'], ['4', '1', '5'], ['1', '2', '3']], [['4', '8', '9'], ['7', '5', '6'], ['7', '4', '5']], [['2', '1', '3'], ['5', '8', '9'], ['4', '5', '6']]]

Пример использования списка:

print(matrix_list) #prints all matrices
print(matrix_list[0]) #prints the first matrix
print(matrix_list[0][1]) #prints the second row of the first matrix
print(matrix_list[0][1][2]) #prints the value from the second row and third column of the first matrix
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...