首页 > 解决方案 > 将来自 linalg.eig 的复杂特征向量存储到 Python 中的数组中

问题描述

我在存储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

不知道是什么问题,有人可以帮助我吗

标签: pythonarraysnumpy

解决方案


根据文档: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]

推荐阅读