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

求助:Networkx的max_flow_min_cost结果导出CSV格式异常

解决NetworkX max_flow_min_cost结果导出问题

问题出在max_flow_min_cost返回的残差图中,流量数据存储在边的flow属性里,但默认的write_edgelist不会自动提取这个属性,只会输出节点对和空的属性字典(也就是你看到的{})。

解决步骤

1. 确认残差图的流量属性

调用max_flow_min_cost时,第二个返回值是残差网络,每条边的flow字段记录了实际流量:

from networkx.algorithms.flow import max_flow_min_cost

# 假设G是你的原始图,已设置capacity和cost属性
flow_total, residual_graph = max_flow_min_cost(G, source_node, sink_node)

2. 正确导出流量数据

如果你想直接用write_edgelist导出,需要显式指定要导出的flow属性:

# 导出为带flow属性的格式,每行是 节点1 节点2 {'flow': 流量值}
nx.write_edgelist(residual_graph, 'flow_output.csv', data=['flow'])

如果需要纯数值格式(比如2 4 8),建议手动遍历边并写入CSV,避免默认的字典格式:

import csv

with open('clean_flow_output.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, delimiter=' ')
    # 遍历所有边,只导出流量大于0的有效边(可选过滤)
    for u, v, edge_attrs in residual_graph.edges(data=True):
        flow = edge_attrs.get('flow', 0)
        if flow > 0:
            writer.writerow([u, v, flow])

这样就能得到你预期的节点1 节点2 流量值格式的输出了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:37:10