networkx: Graph.nodes() 不一致的行为?
networkx: Graph.nodes() inconsistent behaviour?
根据我的理解 G.nodes() 或 G.nodes(False) 应该 return 节点列表。但是我发现虽然这有效:
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(真的)。我做错了什么?
这取决于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
.
为避免将来出现此错误,切勿使用 from numpy import random
,因为它会屏蔽标准库中的同名模块。
出于同样的原因,永远不要使用 from numpy import *
,因为它还会屏蔽 max
、min
、sum
、any
等常用的内置函数和 all
。
根据我的理解 G.nodes() 或 G.nodes(False) 应该 return 节点列表。但是我发现虽然这有效:
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(真的)。我做错了什么?
这取决于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
.
为避免将来出现此错误,切勿使用 from numpy import random
,因为它会屏蔽标准库中的同名模块。
出于同样的原因,永远不要使用 from numpy import *
,因为它还会屏蔽 max
、min
、sum
、any
等常用的内置函数和 all
。