【发布时间】:2021-12-30 00:47:23
【问题描述】:
我有一个 networkx 图表,其中包含一些 list 和 dict 属性,函数 nx.write_graphml 不接受作为导出的有效类型。我找不到可以自动忽略这些属性的函数,所以我决定自己创建一个。
我知道int、float和string被接受,但我不知道是否还有其他的,如果有,是哪些。
【问题讨论】:
标签: python xml numpy networkx graphml
我有一个 networkx 图表,其中包含一些 list 和 dict 属性,函数 nx.write_graphml 不接受作为导出的有效类型。我找不到可以自动忽略这些属性的函数,所以我决定自己创建一个。
我知道int、float和string被接受,但我不知道是否还有其他的,如果有,是哪些。
【问题讨论】:
标签: python xml numpy networkx graphml
graphml 格式遵循XML 结构,根据docs,接受以下数据类型:
每个属性标题都在一个关键元素中定义,具有标识符、名称、标题、边或节点以及数据类型。支持的数据类型:
- 布尔值
- int
- 长
- 浮动
- 双
- 字符串
如果列表不太长,那么一个建议是创建编号属性(例如colour_1、colour_2)。同样,对于字典。这不方便,但这些是graphml 约束。
另外,如果您不打算在 Gephi 中使用 list 或 dict,但想保留它们以供以后使用,那么一种选择是使用类似 json.dumps 的方式将它们转换为字符串表示形式。
更新:写入数据时,networkx 将尝试将数据类型转换为允许的表示形式。例如,numpy 特定的转化列表可以在here 中找到。
【讨论】:
numpy.ndarray 的帖子,它与 graphml 的规范不兼容,而我想看看理论上兼容的 numpy 类gephy 但不是 graphml 支持的数据类型的 python 内置表示
numpy-related handling in networkx 可能有用。我也会用这个更新答案。