#python #eigenvector
#python #собственный вектор
Вопрос:
eigenvalues, eigenvectors = linalg.eig(K)
Как я могу напечатать только собственные векторы len(K)
. Итак, если есть K
матрица 2×2, я получаю 4 собственных вектора, как я могу напечатать только 2 из них, если есть len(K)=2
….
Большое спасибо
Комментарии:
1. почему бы и нет
print eigenvectors[:len(K)]
?2. Эта матрица K не всегда 2×2….it это случайные значения 4×4,….
3. Также я могу добавить, выведите собственные векторы [:len(K)] , это не сработает, если есть только матрица 2×2, она печатает 4 элемента, а не только 2….
4. @такинг, притормози, ковбой. Вы не понимаете собственных векторов. Вернитесь к своим учебникам по математике, прежде чем продолжить.
5. Хорошо, похоже, я этого не понял. Я подумал, что вам следует написать
print eigenvectors[: eigenvalues.index(<index of first almost zero eigenvalue>)]
Ответ №1:
Вы получаете два вектора длиной два, а не четыре вектора. Например:
In [1]: import numpy as np
In [2]: K=np.random.normal(size=(2,2))
In [3]: eigenvalues, eigenvectors = np.linalg.eig(K)
In [4]: eigenvectors
Out[4]:
array([[ 0.83022467 0.j , 0.83022467 0.j ],
[ 0.09133956 0.54989461j, 0.09133956-0.54989461j]])
In [5]: eigenvectors.shape
Out[5]: (2, 2)
Первый вектор равен eigenvectors[:,0]
, второй равен eigenvectors[:,1]
.
Комментарии:
1. Да, но как напечатать только 1 вектор?
2. Спасибо, я кое-что неправильно понял в своем коде, поэтому был немного сбит с толку, спасибо.
3. собственные векторы — это столбцы, а не строки;
Ответ №2:
Из руководства:
Нормализованный собственный вектор, соответствующий собственному значению,
w[i]
является столбцомv[:,i]
.