如何在Python中将输入数据存储到多个矩阵中?

时间:2019-03-10 05:02:46

标签: python matrix multidimensional-array input storing-data

我有一个带有多个矩阵的文本文件,如下所示:

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 个答案:

答案 0 :(得分:1)

您可以编写如下代码:

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 ...

答案 1 :(得分:0)

我确信算法可以在某处进行优化,但是我找到的答案很简单:

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