Oplossing: numpy.linalg.linalgerror: enkelvoudige matrix
Een fout die je in Python tegen kunt komen is:
numpy.linalg.LinAlgError: Singular matrix
Deze fout treedt op wanneer u probeert een enkelvoudige matrix om te keren, wat per definitie een matrix is waarvan de determinant nul is en niet kan worden omgekeerd.
In deze tutorial wordt uitgelegd hoe u deze fout in de praktijk kunt oplossen.
Hoe de fout te reproduceren
Stel dat we de volgende matrix maken met NumPy:
import numpy as np
#create 2x2 matrix
my_matrix = np. array ([[1., 1.], [1., 1.]])
#display matrix
print (my_matrix)
[[1. 1.]
[1. 1.]]
Stel nu dat we de functie inv() van NumPy proberen te gebruiken om de inverse van de matrix te berekenen:
from numpy import inv
#attempt to invert matrix
inv(my_matrix)
numpy.linalg.LinAlgError: Singular matrix
We krijgen een foutmelding omdat de matrix die we hebben gemaakt geen inverse matrix heeft.
Opmerking : Bekijk deze pagina van Wolfram MathWorld die 10 verschillende voorbeelden toont van matrices die geen inverse matrix hebben.
Een matrix is per definitie singulier en kan niet worden geïnverteerd als deze een nuldeterminant heeft.
U kunt de functie det() van NumPy gebruiken om de determinant van een bepaalde matrix te berekenen voordat u probeert deze om te keren:
from numpy import det
#calculate determinant of matrix
det(my_matrix)
0.0
De determinant van onze matrix is nul, wat verklaart waarom we een fout tegenkomen.
Hoe u de fout kunt oplossen
De enige manier om deze fout te omzeilen is door eenvoudigweg een matrix te maken die niet singulier is.
Stel dat we bijvoorbeeld de functie inv() gebruiken om de volgende matrix om te keren:
import numpy as np
from numpy. linalg import inv, det
#create 2x2 matrix that is not singular
my_matrix = np. array ([[1., 7.], [4., 2.]])
#display matrix
print (my_matrix)
[[1. 7.]
[4. 2.]]
#calculate determinant of matrix
print (det(my_matrix))
-25.9999999993
#calculate inverse of matrix
print (inv(my_matrix))
[[-0.07692308 0.26923077]
[0.15384615 -0.03846154]]
We krijgen geen fouten bij het inverteren van de matrix, omdat de matrix niet singulier is.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Oplossing: Object ’numpy.float64′ kan niet worden opgevraagd
Oplossing: Object ’numpy.ndarray‘ kan niet worden opgevraagd
Oplossing: Object ’numpy.float64′ kan niet worden geïnterpreteerd als een geheel getal