我一直在试图验证我的代码来计算写在的Python马氏距离(双重校验的结果OpenCV的比较) 我的数据点是一维的每个(5行×1列)。一维马氏距离在Python
在的OpenCV(C++),我成功地计算马哈拉诺比斯距离时,数据点的尺寸是与上述尺寸。
以下代码是未成功在计算矩阵的维数为5行x 1列时的Mahalanobis距离。 但它的工作原理,当列的矩阵中的数量都超过1:
import numpy;
import scipy.spatial.distance;
s = numpy.array([[20],[123],[113],[103],[123]]);
covar = numpy.cov(s, rowvar=0);
invcovar = numpy.linalg.inv(covar)
print scipy.spatial.distance.mahalanobis(s[0],s[1],invcovar);
我收到以下错误:
Traceback (most recent call last):
File "/home/abc/Desktop/Return.py", line 6, in <module>
invcovar = numpy.linalg.inv(covar)
File "/usr/lib/python2.6/dist-packages/numpy/linalg/linalg.py", line 355, in inv
return wrap(solve(a, identity(a.shape[0], dtype=a.dtype)))
IndexError: tuple index out of range
如果我正确理解,在'numpy.linalg.inv'方法需要[方阵](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.inv.html# numpy.linalg.inv),但你似乎给它一个单一的元素数组。 – srgerg 2012-03-30 00:17:55
我明白这一点。那么,有没有解决? – garak 2012-03-30 00:28:22