Python networkx:Graph.nodes()行为不一致?
根据我的理解,G.nodes()或G.nodes(False)应该返回一个节点列表。然而,我发现,尽管这样做有效:Python networkx:Graph.nodes()行为不一致?,python,networkx,Python,Networkx,根据我的理解,G.nodes()或G.nodes(False)应该返回一个节点列表。然而,我发现,尽管这样做有效: G = nx.watts_strogatz_graph(1000, 20, 0) random.choice(G.nodes()) 这并不是: G = nx.grid_graph([20,20]) random.choice(G.nodes()) -> File "mtrand.pyx", line 1016, in mtrand.RandomState.choice
G = nx.watts_strogatz_graph(1000, 20, 0)
random.choice(G.nodes())
这并不是:
G = nx.grid_graph([20,20])
random.choice(G.nodes())
->
File "mtrand.pyx", line 1016, in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:7850)
ValueError: a must be 1-dimensional
当我检查2中G.nodes()的形状时。在这种情况下,无论我使用G.nodes(False)还是G.nodes(True),它总是(400,2)。我做错了什么?这取决于如何定义
random
。如果random
是标准库中的模块,则:
import random
random.choice(G.nodes())
会有用的。如果random
是numpy.random
,则
from numpy import random
random.choice(G.nodes())
将提高
/usr/lib/python2.7/dist-packages/numpy/random/mtrand.so in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:7850)()
ValueError: a must be 1-dimensional
注意:错误消息中的路径指的是numpy/random
为了避免将来出现此错误,请不要使用numpy import random中的
,
,因为它会屏蔽标准库中同名的模块
出于同样的原因,切勿使用numpy import*中的
,因为它还屏蔽了常用的内置项,如max
、min
、sum
、any
和all
正如您正确假设的,我使用的是“fromscipyimport*”。从现在起我会意识到风险。谢谢!