当前位置: 首页 > 面试题库 >

在python中使用numpy.linalg.eig之后,对特征值和相关的特征向量进行排序

裴泰平
2023-03-14
问题内容

我正在使用numpy.linalg.eig获得特征值和特征向量的列表:

A = someMatrixArray
from numpy.linalg import eig as eigenValuesAndVectors

solution = eigenValuesAndVectors(A)

eigenValues = solution[0]
eigenVectors = solution[1]

我想对我的特征值进行排序(例如,从最低到最高),以某种方式知道排序后相关的特征向量是什么。

我没有找到任何使用python函数的方法。有什么简单的方法还是我必须对我的排序版本进行编码?


问题答案:

使用numpy.argsort。它返回一个索引,该索引将用于对数组进行排序。

import numpy as np
import numpy.linalg as linalg

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

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

如果特征值是复数,则排序顺序是按字典顺序排列(也就是说,复数首先根据其实部进行排序,而其虚部则打破了联系)。



 类似资料:
  • 本文向大家介绍numpy.linalg.eig() 计算矩阵特征向量方式,包括了numpy.linalg.eig() 计算矩阵特征向量方式的使用技巧和注意事项,需要的朋友参考一下 在PCA中有遇到,在这里记录一下 计算矩阵的特征值个特征向量,下面给出几个示例代码: 在使用前需要单独import一下 官方文档链接:http://docs.scipy.org/doc/numpy/reference/g

  • (这是我第二次尝试追踪我的确切问题。查看编辑历史记录) 我有一个简单的通用特性和两种不同的实现: 我现在想要一个包含两个实现元素的向量。正如我在这里学到的,我做: 但是编译器不同意: 一方面,这是有道理的。另一方面,我应该为写什么?我希望它是通用的,所以我不能简单地在那里放或。我可以做

  • 本文向大家介绍C++ Eigen库计算矩阵特征值及特征向量,包括了C++ Eigen库计算矩阵特征值及特征向量的使用技巧和注意事项,需要的朋友参考一下 本文主要讲解利用Eigen库计算矩阵的特征值及特征向量并与Matlab计算结果进行比较。 C++Eigen库代码 计算结果: 最大最小特征值及其索引位置 Matlab 代码 Matlab计算结果 使用sort()函数对特征值排序 主成份分析以及许多

  • 我正在尝试创建一个特征对象的向量,但我得到了类型不匹配。我还尝试使用代替for循环,但遇到了同样的问题。这是我真实代码的最小版本,我意识到这个例子不需要使用特征对象,但我的真实代码需要,因为列表中除了之外还有其他类型,它们也实现了。如何使用正确的类型创建以便将其传递给?

  • 我正在Rust中编写一个带有控制台提示界面的进程内存扫描器。 我需要扫描仪类型,如winapi扫描仪或ring0驱动程序扫描仪,所以我试图实现多态性。 目前我有以下结构: 将来,除了 之外,我还会有更多扫描仪类型,因此,如果我理解正确,我应该使用特征引用 (