0

这是我正在使用的一些代码的示例:

import numpy as np
import numpy.linalg as linalg

A = np.random.random((10,10))
eigenValues,eigenVectors = linalg.eig(A)

idx = eigenValues.argsort()   
eigenValues = eigenValues[idx]
eigenVectors = eigenVectors[:,idx]

我要做的是仅绘制一组多于五个特征向量中的五个最小特征向量,然后绘制它们。那么如何选择前五个特征向量,然后在 matplotlib 中绘制它们呢?

4

2 回答 2

1

以下将选择前五个特征向量(假设您已经按照示例进行了排序):

eigenVectors[:,:5]

至于如何最好地绘制一个十维向量,我不确定。

于 2013-03-20T17:54:07.467 回答
0

对于未来的读者,这里有一个代码示例可以做到这一点:

from pylab import *
N = 10
k = 5
L = 1

x = linspace(-L, L, N)
H = random((N,N))
ls, vs = eig(H)

#find and plot k lowest eigenvalues and eigenvectors
min_values_indices = argsort(ls)[0:k]
for i in min_values_indices:
    plot(x, vs[:,i])

show()

顺便说一句 - 我会将这个问题的主题更改为提供更多信息的内容(例如“numpy - 找到最低 k 特征值和特征向量”)

于 2014-05-28T14:35:59.143 回答