Networkx ValueError:没有一个不能成为节点

问题描述 投票:0回答:2

我正在尝试实现 Barabasi-Albert 模型,但在 network.add_edge(new_node,node) 处收到 ValueError“没有一个不能成为节点”。我尝试过滤列表,以便不存在任何 None 元素,但它似乎不起作用。这是代码:

  def ba_network(N, m, seed_net_size=4):
        # Generate initial small seed network (clique of seedsize nodes)
        network = nx.complete_graph(seed_net_size)
        
        for i in range(N):
            degrees = [value for (node, value) in network.degree()]
            sum_of_degrees = sum(degrees)
            degrees_prob = [float(value)/sum_of_degrees for (node, value) in network.degree()]
            chosen = np.random.choice(network, m, p=degrees_prob,replace=False)
            edges = []
            new_node = network.add_node(1)
            nodes = list(filter(lambda node: node is not None, chosen))
            for node in nodes:
                network.add_edge(new_node,node)
    
        return network
python networkx
2个回答
0
投票

正如评论中提到的,

network.add_node(1)
返回 None。 如果你想访问刚刚插入的节点,看一下this


0
投票

只需检查数据即可。如果您的任何数据点无效 例如

Null
None
,您将遇到此错误。

© www.soinside.com 2019 - 2024. All rights reserved.