/ / ValueError: la matrice doit être bidimensionnelle - python, numpy

ValueError: la matrice doit être bidimensionnelle - python, numpy

J'ai les codes suivants pour tracer un contour gassian-2D, mais j'obtiens cette erreur:

Traceback (most recent call last):
File "question.py", line 15, in <module>
Z0=gaussian_2d(X0,Y0,2,3,cov)
File "question.py", line 4, in gaussian_2d
return exp(-0.5*mat([x-x0,y-y0])*sigmaMatrix.I*mat([x-x0,y-y0]).T)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/matrixlib/defmatrix.py", line 96, in asmatrix
return matrix(data, dtype=dtype, copy=False)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/matrixlib/defmatrix.py", line 272, in __new__
raise ValueError("matrix must be 2-dimensional")
ValueError: matrix must be 2-dimensional

C'est mon code:

import matplotlib.pyplot as plt
from numpy import *
def gaussian_2d(x, y, x0, y0, sigmaMatrix):
return exp(-0.5*mat([x-x0,y-y0])*sigmaMatrix.I*mat([x-x0,y-y0]).T)
cov=mat([[1,0],[0,2]])
delta=0.025
xgrid=arange(-2, 6, delta)
ygrid=arange(-2, 6, delta)
X0, Y0 = meshgrid(xgrid, ygrid)
Z0=gaussian_2d(X0,Y0,2,3,cov)

Quelqu'un peut-il me dire ce que je fais mal ici?

Réponses:

0 pour la réponse № 1

Les erreurs commencent à partir de la concaténation mais les dimensions de votre matrice ne correspondent pas non plus.

Vous effectuez une multiplication de forme quadratique x^T A x mais votre meshgrid les variables sont des matrices carrées de 320x320. Votre une matrice cov est 2x2 donc vous obtenez une erreur.

Si les tailles correspondent, vous pouvez concaténer les colonnes mat(c_[x-x0,y-y0]) ou utilisez toute autre option d'empilement.