Estoy usando linalg.eig (A) para obtener los valores propios y vectores propios de una matriz. ¿Hay una forma fácil de ordenar estos valores propios (y vectores asociados) en orden?python numpy ordenar valores propios
Respuesta
Desea utilizar las funciones NumPy sort()
y argsort()
. argsort()
devuelve la permutación de los índices necesarios para ordenar una matriz, por lo que si desea ordenar la magnitud de valor propio (el tipo estándar para matrices NumPy parece ser más pequeño a más grande), que puede hacer:
import numpy as np
A = np.asarray([[1,2,3],[4,5,6],[7,8,9]])
eig_vals, eig_vecs = np.linalg.eig(A)
eig_vals_sorted = np.sort(eig_vals)
eig_vecs_sorted = eig_vecs[:, eig_vals.argsort()]
# Alternatively, to avoid making new arrays
# do this:
sort_perm = eig_vals.argsort()
eig_vals.sort() # <-- This sorts the list in place.
eig_vecs = eig_vecs[:, sort_perm]
En su segundo ejemplo, no es necesario call sort() en eig_vals nuevamente, ya tiene sort_perm. es decir eig_vals = eig_vals [sort_perm] – user545424
¡Buen punto! No estaba seguro de si el uso de la notación de división '[]' hizo una copia extra de la lista. Mi pensamiento era que al menos uno de ellos se puede hacer en su lugar, y no sabía si 'a = a [sort_perm]' es tan eficiente como 'a.sort()'. – ely
Sí, puedo hacer una pequeña evaluación comparativa y publicar los resultados – user545424
np.linalg.eig
a menudo devolverá valores complejos. Es posible que desee considerar el uso de np.sort_complex(eig_vals)
.
- 1. valores propios en MATLAB
- 2. Valores propios de precisión cuádruple, vectores propios y logaritmos de matriz
- 3. ¿Cómo calcula OPENCV los valores propios y los vectores propios?
- 4. ¿Cómo puedo "ordenar zip" matrices numpy paralelas?
- 5. interpolación con python numpy
- 6. Python: ¿definir mis propios operadores?
- 7. Ignorando -Inf valores en matrices utilizando numpy/scipy en Python
- 8. Escaso eigsh de Scipy() para valores propios pequeños
- 9. Ordenar una matriz numpy como una mesa
- 10. Ordenar con valores numéricos
- 11. Python pandas ordenar columna según los valores en una fila
- 12. Rango de valores numpy válidos
- 13. Python numpy array vs list
- 14. Numpy: ordenar una matriz multidimensional por una matriz multidimensional
- 15. vectores propios Python: diferencias entre numpy.linalg, scipy.linalg y scipy.sparse.linalg
- 16. Python/Numpy MemoryError
- 17. python numpy savetxt
- 18. Numpy con python 3.0
- 19. Python (Numpy) matriz de clasificación
- 20. ¿Puedo usar Lapack para calcular los valores propios y vectores propios de matrices dispersas grandes?
- 21. Ruby ordenar por valores múltiples?
- 22. Ordenar un conjunto numpy 2D por varios ejes
- 23. La forma más rápida de calcular k valores autovalores más grandes y vectores propios correspondientes con numpy
- 24. Python: Hacer numpy por defecto a float32
- 25. Ordenar Tuplas Python
- 26. Python Ordenar últimos caracteres
- 27. utilizando valores propios para comprobar la singularidad: identificar columnas colineales
- 28. Problema con los valores propios de cálculo usando mathematica
- 29. Usando SQL, ¿cómo actualizo las filas, usando sus propios valores?
- 30. cómo implementar el cálculo de valores propios con MapReduce/Hadoop?
Posible duplicado: http://stackoverflow.com/questions/8092920/sort-eigenvalues-and-associated-eigenvectors-after-using-numpy-linalg-eig-in-pyt – amcnabb