【问题标题】:What data types can be exported as attributes when exporting to `graphml` with `networkx`?使用 `networkx` 导出到 `graphml` 时,可以将哪些数据类型导出为属性?
【发布时间】:2021-12-30 00:47:23
【问题描述】:

我有一个 networkx 图表,其中包含一些 listdict 属性,函数 nx.write_graphml 不接受作为导出的有效类型。我找不到可以自动忽略这些属性的函数,所以我决定自己创建一个。

我知道intfloatstring被接受,但我不知道是否还有其他的,如果有,是哪些。

【问题讨论】:

    标签: python xml numpy networkx graphml


    【解决方案1】:

    graphml 格式遵循XML 结构,根据docs,接受以下数据类型:

    每个属性标题都在一个关键元素中定义,具有标识符、名称、标题、边或节点以及数据类型。支持的数据类型:

    • 布尔值
    • int
    • 浮动
    • 字符串

    如果列表不太长,那么一个建议是创建编号属性(例如colour_1colour_2)。同样,对于字典。这不方便,但这些是graphml 约束。

    另外,如果您不打算在 Gephi 中使用 listdict,但想保留它们以供以后使用,那么一种选择是使用类似 json.dumps 的方式将它们转换为字符串表示形式。

    更新:写入数据时,networkx 将尝试将数据类型转换为允许的表示形式。例如,numpy 特定的转化列表可以在here 中找到。

    【讨论】:

    • 非常感谢,特别是将它们转换为字符串而不是删除它们的想法,您引用了 graphml 可以存储的内容,我认为可以肯定地说 int bool string 和 float 类不会t 引发任何错误,但这是否意味着其他人会例如我认为 numpy 有他自己的长整数类。它会引发错误还是会被接受。我想通了
    • 太好了,好像numpy won't work either,但它可以转换成一个列表(它指的是单个值,然后只是一个int或一个float)......
    • 你引用的帖子是他想要一个 numpy.ndarray 的帖子,它与 graphml 的规范不兼容,而我想看看理论上兼容的 numpy 类gephy 但不是 graphml 支持的数据类型的 python 内置表示
    • This list of numpy-related handling in networkx 可能有用。我也会用这个更新答案。
    • 我认为你实际上找到了允许的类型的整个列表,这似乎只是内置的,并且它们的所有表亲都在 numpy 中。一旦你改变它,我会验证你的答案
    猜你喜欢
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多