gpt4 book ai didi

python - 使用 NetworkX 将 NumPy 值写入 GEXF 时出现 KeyError

转载 作者:太空狗 更新时间:2023-10-30 01:08:27 24 4
gpt4 key购买 nike

大家好,我想计算节点坐标,然后将图形导出到 GEXF 并使用 Gephi 进行处理。但是,当我运行以下代码时

import networkx as nx
import numpy as np
....
area_ratios = [np.sum(new[:,0])/Stotal, np.sum(new[:,1])/Stotal, np.sum(new[:,2])/Stotal]
X = np.array([0, -sqrt(3)/2 * area_ratios[1] , sqrt(3)/2 * area_ratios[2]])
Y = np.array([ area_ratios[0], -1/2 * area_ratios[1] , -1/2 * area_ratios[2]])

point = (np.sum(X), np.sum(Y))

graph.add_node(node_name, {'x-coord': np.asscalar(point[0]*SCALE_FACTOR),
'y-coord': np.asscalar(point[1]*SCALE_FACTOR), 'size': Stotal*3})

nx.write_gexf(graph, PATH + 'mygraph.gexf')

它给了我一个KeyError: <type 'numpy.float64'>尽管np.asscalar旨在将相关属性转换为兼容的 python 类型。

有什么想法吗?

最佳答案

看起来这个问题很久以前就解决了,但我发现我的代码在使用 pandas 数据框中的浮点值时遇到了类似的问题。解决方案在评论中,但我花了一段时间才弄明白,所以我想我可以澄清一下。

如果您从这样的数据框中创建节点:

G.add_node(df2.loc[row,door_col],
attr_dict={'dropoff':df2.loc[row,'A'],
'pageLoadTime':df2.loc[row,'B'],
'pageviews':df2.loc[row,'C'],
'sessions':df2.loc[row,'D'],
'entrances':df2.loc[row,'E'],
'exits':df2.loc[row,'F'],
'timeOnPage':df2.loc[row,'G'],
'classesB':df2.loc[row,'H']})

假设 cols a-g 是 float ,它们是 np.float64 值,而不是浮点值。 nx.write_gexf() 会崩溃。然而,简单的解决方法是使用类似这样的方法将它们强制转换为简单的值:

G.add_node(df2.loc[row,door_col],
attr_dict={'dropoff':float(df2.loc[row,'A']),
'pageLoadTime':float(df2.loc[row,'B']),
'pageviews':float(df2.loc[row,'C']),
'sessions':float(df2.loc[row,'D']),
'entrances':float(df2.loc[row,'E']),
'exits':float(df2.loc[row,'F']),
'timeOnPage':float(df2.loc[row,'G']),
'classesB':str(df2.loc[row,'H'])})

有很多工具无法处理 np.float64 类型。转换它们始终是简单的选择。

关于python - 使用 NetworkX 将 NumPy 值写入 GEXF 时出现 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22037360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com