如何在Python(不使用numpy)中将文本文件中的多矩阵数据分别存储?
拆分文本文件中的多矩阵并存储为独立变量
首先得明确你的文本文件里矩阵的分隔规则,常见的有两种情况,分别给你对应的实现方法:
情况1:矩阵之间用空行分隔
假设你的文件内容长这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
可以按空行分割出每个矩阵的文本块,再转成二维列表(如果用numpy的话转成数组更方便):
# 读取文件内容 with open('matrices.txt', 'r') as f: content = f.read() # 按空行分割成各个矩阵的文本块,过滤掉空的块 matrix_blocks = [block.strip() for block in content.split('\n\n') if block.strip()] # 把每个文本块转成二维列表(或numpy数组) matrices = [] for block in matrix_blocks: # 按行分割,每行转成数字列表 matrix = [list(map(float, line.split())) for line in block.split('\n') if line.strip()] matrices.append(matrix) # 赋值给独立变量 matrixA, matrixB = matrices # 如果有更多矩阵就继续加,比如matrixA, matrixB, matrixC = matrices
如果用numpy处理数组(推荐,方便后续矩阵运算),只需要把转矩阵的部分改成:
import numpy as np matrices = [] for block in matrix_blocks: matrix = np.array([list(map(float, line.split())) for line in block.split('\n') if line.strip()]) matrices.append(matrix) matrixA, matrixB = matrices
情况2:文件中有明确的矩阵名称标记
如果你的文件是带标记的,比如:
matrixA: 1 2 3 4 5 6 matrixB: 7 8 9 10 11 12
可以逐行读取,识别标记来切换当前处理的矩阵:
import numpy as np current_matrix = None matrix_dict = {} with open('matrices.txt', 'r') as f: for line in f: line = line.strip() if not line: continue # 跳过空行 # 判断是不是矩阵名称行 if line.endswith(':'): mat_name = line[:-1] current_matrix = [] matrix_dict[mat_name] = current_matrix else: # 把行转成数字列表加入当前矩阵 current_matrix.append(list(map(float, line.split()))) # 把字典里的矩阵转成numpy数组(可选) for key in matrix_dict: matrix_dict[key] = np.array(matrix_dict[key]) # 提取成独立变量 matrixA = matrix_dict['matrixA'] matrixB = matrix_dict['matrixB']
这种方法更灵活,不管文件里有多少个矩阵,都能通过名称直接提取。
注意:如果你的矩阵元素是整数,把float改成int就行。
内容的提问来源于stack exchange,提问作者helpmeplz
相关产品推荐
相关产品推荐

