我有一个包含多个矩阵的文本文件:
A 3 3
1 1 1
2 2 2
3 3 3
[space]
B 3 2
9 9 9
7 7 7
[space]
C 2 2
7 7
7 7我想在python中读取这个输入文件,并将它存储在多个矩阵中,如:
matrixA = [...] # first matrix
matrixB = [...] # second matrix
..。
等等。我知道如何在python中读取外部文件,但不知道如何将该输入文件划分为多个矩阵,如何才能这样做呢?
发布于 2022-09-08 08:57:56
可以这样解析该文件:
import numpy as np
SPLIT_SEQUENCE = '[space]'
INPUT_FILE = 'test.txt'
with open(INPUT_FILE) as f:
matrix_data = f.read().split(SPLIT_SEQUENCE)
matrixes = {}
for d in matrix_data:
parts = [s for s in d.split('\n') if s]
header = parts[0].split()
name, shape = header[0], (int(header[2]), int(header[1]))
matrixes[name] = np.zeros(shape)
for i, part in enumerate(parts[1:]):
for j, value in enumerate(part.split()):
matrixes[name][i, j] = int(value)
matrixA = matrixes['A']
matrixB = matrixes['B']
matrixC = matrixes['C']结果:
print(matrixA)
[[1. 1. 1.]
[2. 2. 2.]
[3. 3. 3.]]
print(matrixB)
[[9. 9. 9.]
[7. 7. 7.]]
print(matrixC)
[[7. 7.]
[7. 7.]]或不使用numpy (即仅使用列表):
SPLIT_SEQUENCE = '[space]'
INPUT_FILE = 'test.txt'
with open(INPUT_FILE) as f:
matrix_data = f.read().split(SPLIT_SEQUENCE)
matrixes = {}
for d in matrix_data:
parts = [s for s in d.split('\n') if s]
name = parts[0].split()[0]
matrixes[name] = []
for i, part in enumerate(parts[1:]):
matrixes[name].append([])
for value in part.split():
matrixes[name][i].append(int(value))
matrixA = matrixes['A']
matrixB = matrixes['B']
matrixC = matrixes['C']结果:
print(matrixA)
[[1, 1, 1], [2, 2, 2], [3, 3, 3]]
print(matrixB)
[[9, 9, 9], [7, 7, 7]]
print(matrixC)
[[7, 7], [7, 7]]https://stackoverflow.com/questions/73646139
复制相似问题