Python Networkx';s";广义拉普拉斯函数;不再工作了?

Python Networkx';s";广义拉普拉斯函数;不再工作了?,python,networkx,Python,Networkx,此示例(摘自Networkx手册): #/usr/bin/env python """ 创建一个G{n,m}随机图并计算特征值。 需要Numeric Python中的numpy或LinearAlgebra包。 使用可选的pylab绘图生成特征值的直方图。 """ __作者:Aric Hagberg(hagberg@lanl.gov)""" __学分=“” #版权所有(C)2004-2006 by #阿里克·哈伯格 #丹·舒尔特 #皮特斯瓦特 #版权所有。 #BSD许可证。 从networkx导入

此示例(摘自Networkx手册):

#/usr/bin/env python
"""
创建一个G{n,m}随机图并计算特征值。
需要Numeric Python中的numpy或LinearAlgebra包。
使用可选的pylab绘图生成特征值的直方图。
"""
__作者:Aric Hagberg(hagberg@lanl.gov)"""
__学分=“”
#版权所有(C)2004-2006 by
#阿里克·哈伯格
#丹·舒尔特
#皮特斯瓦特
#版权所有。
#BSD许可证。
从networkx导入*
尝试:
进口numpy.linalg
特征值=numpy.linalg.eigvals
除恐怖外:
raise IMPORTROR(“无法导入numpy”)
尝试:
从派拉布进口*
除:
通过
n=1000#1000个节点
m=5000#5000边
G=gnm_随机图(n,m)
L=广义拉普拉斯(G)
e=特征值(L)
打印(“最大特征值:,最大(e))
打印(“最小特征值:,最小(e))
#如果我们有matplotlib,就用它绘图
#显示特征值的“半圆”分布
尝试:
历史(e,箱子=100)#带有100个箱子的柱状图
xlim(0,2)#特征值介于0和2之间
show()
除:
通过
使用networkx的最新版本引发以下错误:

Traceback (most recent call last):
  File "Untitled 2.py", line 36, in <module>
    L=generalized_laplacian(G)
NameError: name 'generalized_laplacian' is not defined
回溯(最近一次呼叫最后一次):
文件“Untitled 2.py”,第36行,在
L=广义拉普拉斯(G)
NameError:未定义名称“广义拉普拉斯”

我该怎么做才能让它工作?

我想这个名字在:

它从
networkx/linalg/laplacianmatrix.py
更改的行包括

-combinatorial_laplacian=laplacian_matrix
-generalized_laplacian=normalized_laplacian_matrix
-normalized_laplacian=normalized_laplacian_matrix
-laplacian=laplacian_matrix
因此,我认为您可以使用
标准化的拉普拉斯矩阵

>>> normalized_laplacian_matrix(G)
<1000x1000 sparse matrix of type '<type 'numpy.float64'>'
    with 11000 stored elements in Compressed Sparse Row format>
标准化拉普拉斯矩阵(G)
新版本的NetworkX肯定打破了这个例子。 以下是一个有效的方法:

import networkx as nx
import numpy.linalg
import matplotlib.pyplot as plt

n = 1000 # 1000 nodes
m = 5000 # 5000 edges
G = nx.gnm_random_graph(n,m)

L = nx.normalized_laplacian_matrix(G)
e = numpy.linalg.eigvals(L.A)
print("Largest eigenvalue:", max(e))
print("Smallest eigenvalue:", min(e))
plt.hist(e,bins=100) # histogram with 100 bins
plt.xlim(0,2)  # eigenvalues between 0 and 2
plt.show()

谢谢现在,我在eigvals(U assertRankAtLeast2(a)文件“/Library/Python/2.7/site-packages/numpy/linalg/linalg.py”第886行的e=exharacteristals(L)文件“/Library/Python/2.7/site-packages/numpy/linalg/linalg.py”第40行通过“回溯(最近一次调用):文件“Untitled 2.py”得到了这个错误“,第202行,在_assertRankAtLeast2'中至少包含二维“%len(a.shape))numpy.linalg.linalg.linalg错误:给定了0维数组。数组必须至少是二维的“我猜L的格式不对?
>>> normalized_laplacian_matrix(G)
<1000x1000 sparse matrix of type '<type 'numpy.float64'>'
    with 11000 stored elements in Compressed Sparse Row format>
import networkx as nx
import numpy.linalg
import matplotlib.pyplot as plt

n = 1000 # 1000 nodes
m = 5000 # 5000 edges
G = nx.gnm_random_graph(n,m)

L = nx.normalized_laplacian_matrix(G)
e = numpy.linalg.eigvals(L.A)
print("Largest eigenvalue:", max(e))
print("Smallest eigenvalue:", min(e))
plt.hist(e,bins=100) # histogram with 100 bins
plt.xlim(0,2)  # eigenvalues between 0 and 2
plt.show()