如何在 Python 中找到拉普拉斯算子 (L) 的场向量?
我可以使用以下方法获取特征值和特征向量:
特征值,特征向量 = linalg.eig(L)
我假设 python 不会按顺序返回特征值。
我是否取第二大特征值,然后将其与相应的特征向量匹配(在索引中匹配)?
在对特征值进行排序时,如何处理负值?是按绝对大小排序吗?
感谢您的帮助
好吧,我不知道其中涉及的数学,但我会尽力而为。
如果您检查文档, linalg.eig
事实上,返回特征向量的顺序与其相应的特征值相同。
我可能会做这样的事情:
w, v = linalg.eig(L)
seen = {}
unique_eigenvalues = []
for (x, y) in zip(w, v):
if x in seen:
continue
seen[x] = 1
unique_eigenvalues.append((x, y))
fiedler = sorted(unique_eigenvalues)[1][1]
默认情况下,Python 按第一个元素对元组进行排序,然后是第二个元素,依此类推,数字按照您期望的方式排序(-2
另外,我假设可能存在重复的特征值,并且 Fiedler 向量是与第二小的唯一特征值相关的特征向量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)