networkx计算数值协调需要int?

时间:2016-02-08 00:14:37

标签: python networkx

我正在尝试使用networkx根据我设置为节点的数字属性来计算数字配置。我的节点属性是浮点数。当我打电话给协调功能时:

assort = nx.numeric_assortativity_coefficient(G,'float_attr')

我收到了以下错误。

File "/some dir.../networkx/algorithms/assortativity/correlation.py", line 229, in numeric_assortativity_coefficient
a = numeric_mixing_matrix(G,attribute,nodes)
File "/some dir.../networkx/algorithms/assortativity/mixing.py", line 193, in numeric_mixing_matrix
mapping=dict(zip(range(m+1),range(m+1)))
TypeError: range() integer end argument expected, got float.

我检查了networkx协同算法的documentation page,并没有说数字属性必须是int。有人知道是否需要吗?

顺便说一句,我使用相同的网络和性别属性(设置为0和1)来计算属性和数字配置。我没有问题。所以似乎问题在于node属性的int / float类型。

1 个答案:

答案 0 :(得分:2)

通过使用以下方法将float变量转换为int来解决

问题

int(round(float_attr*1000, 0))

提交了一个问题this并得到了一个确认答案,它只处理离散的int值。

性能方面,因为我的网络不是很大(200多个节点),所以计算时间仍然不到1分钟。