gpt4 book ai didi

python - 如何从 networkx 中的图形中删除 float ('nan' ) 节点?

转载 作者:行者123 更新时间:2023-12-04 08:46:50 32 4
gpt4 key购买 nike

我有一个包含 float('nan') 的数据集(pickle 格式),我需要删除它。

可以将 float('nan') 作为 networkx 中的节点添加到图中。但是,我不知道如何删除它。

import networkx as nx
G = nx.Graph()
G.add_node(float('nan'))
print(G.nodes) # [nan], so there is float('nan') in the graph
G.remove_node(float('nan')) # this statement raise a NetworkxError showing nan not in the graph

CoReRank-WSDM-2019中的代码和数据和 BirdNest .

谁能帮我解决这个问题?提前谢谢你。

最佳答案

我们可以在一个简单的字典上对此进行测试,它是 NetworkX 图的基础数据结构。假设你有:

d = {'a':3, float('nan'):4}

如果我们像您尝试的那样尝试访问 NaN 键:

d[float('nan')]
> KeyError: nan

其核心原因是 NaN 不等于自身:

>>> float("nan") == float("nan")
False

很好地解释了这导致查找失败的原因 here .

一个解决方法,可能是遍历图形键,并识别 NaN 节点,然后使用对象的相同引用删除该键:

import math

G = nx.Graph()
G.add_node(float('nan'))
G.add_node(3)
print(G.nodes)
# [nan, 3]

nan_nodes = []
for node in G.nodes():
if math.isnan(node):
nan_nodes.append(node)
G.remove_nodes_from(nan_nodes)

G.nodes()
# NodeView((3,))

关于python - 如何从 networkx 中的图形中删除 float ('nan' ) 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64276449/

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