Сохранение сложных собственных векторов из linalg.eig в массив в Python - PullRequest
0 голосов
/ 21 апреля 2020

У меня проблемы с сохранением выхода numpy.linalg.eig(). Я хочу хранить в два разных массива. Вот как я пытался:

vec1 = np.zeros(y.shape[0],dtype=complex)
vec2 = np.zeros(y.shape[0],dtype=complex)
for i in np.arange(y.shape[0]):
    val,vec= np.linalg.eig(rho_t[:,:,i])
    vec1[i] = vec[0]
    vec2[i] = vec[1]

Сообщение об ошибке выглядит следующим образом:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-389-791a7e5e4801> in <module>
      3 for i in np.arange(y.shape[0]):
      4     val,vec= np.linalg.eig(rho_t[:,:,i])
----> 5     vec1[i] = vec[0]
      6     vec2[i] = vec[1]
      7     #vec2[i] = np.array(sol[1][1])

TypeError: only length-1 arrays can be converted to Python scalars

Не знаю, в чем проблема, может кто-нибудь помочь мне, пожалуйста

1 Ответ

1 голос
/ 21 апреля 2020

Согласно документации: https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.eig.html

Нормализованные (единичные «длина») собственные векторы, так что столбец v [:, i] является собственным вектором, соответствующим собственное значение w [i].

, поэтому, возможно, решение таково:

for i in np.arange(y.shape[0]):
    val,vec= np.linalg.eig(rho_t[:,:,i])
    vec1[i] = vec[:,0]
    vec2[i] = vec[:,1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...