如何在Python中选择和绘制特定数组?
这是我正在使用的一段代码:
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中把它们画出来呢?
2 个回答
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个特征值和特征向量”。
1
下面的代码会选择前五个特征向量(假设你已经像例子中那样进行了排序):
eigenVectors[:,:5]
至于怎么最好地绘制一个十维向量,我就不太确定了。