You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python读取文本数据创建各a(i,j)值已知的N×N矩阵

Python实现从文本数据构建N×N节点关系矩阵

需求梳理

  • 输入:存储节点关系的文本文件,每行格式为起始节点 终止节点 关系值,示例数据:

A B 1
B C -1
A C 1
B D 1
D A -1
C D 1

  • 规则:
    • 矩阵行列索引为文本中出现的所有不重复节点,示例对应索引为A、B、C、D
    • 矩阵对角线元素固定为0
    • 非对角线位置按照文本中给出的关系值填充,矩阵为对称结构(即a(i,j)和a(j,i)取值相同)
  • 目标输出矩阵结构:
ABCD
A011-1
B10-11
C1-101
D-1110

实现代码

代码自动识别节点数量N,不需要手动配置矩阵维度,支持任意数量的节点输入:

from collections import defaultdict

def build_relation_matrix(file_path):
    edge_map = defaultdict(int)
    node_set = set()

    # 读取并解析文本数据
    with open(file_path, 'r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()
            if not line:
                continue
            node1, node2, val = line.split()
            val = int(val)
            node_set.add(node1)
            node_set.add(node2)
            # 对称赋值
            edge_map[(node1, node2)] = val
            edge_map[(node2, node1)] = val

    # 生成有序节点列表,固定行列索引顺序
    node_list = sorted(node_set)
    n = len(node_list)
    node_index = {node: idx for idx, node in enumerate(node_list)}

    # 初始化N×N零矩阵
    matrix = [[0 for _ in range(n)] for _ in range(n)]

    # 填充非对角线关系值
    for (u, v), val in edge_map.items():
        matrix[node_index[u]][node_index[v]] = val

    return node_list, matrix

def pretty_print_matrix(node_list, matrix):
    # 格式化打印,对齐输出
    header = "    " + " ".join([f"{node:>3}" for node in node_list])
    print(header)
    for idx, row in enumerate(matrix):
        row_str = f"{node_list[idx]:<3} " + " ".join([f"{num:>3}" for num in row])
        print(row_str)

# 调用示例:将下方路径替换为你的实际文本文件路径
if __name__ == "__main__":
    nodes, mat = build_relation_matrix("relation_data.txt")
    pretty_print_matrix(nodes, mat)

补充说明

  • 如果需要结构化的表格格式输出,可以搭配pandas使用,追加以下代码即可得到DataFrame格式的矩阵:
import pandas as pd
matrix_df = pd.DataFrame(mat, index=nodes, columns=nodes)
print(matrix_df)
  • 代码默认对节点做字典序排序,如果需要自定义行列顺序,替换sorted(node_set)部分的逻辑即可
  • 文本中如果存在重复的节点对记录,后读取的记录会覆盖之前的取值

内容的提问来源于stack exchange,提问作者Vasudev Archak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 08:31:08