[SciPy-user] Error using 0.4.8 on code that worked on 0.3.2
Antonio Arauzo Azofra
arauzo at decsai.ugr.es
Tue Apr 4 14:50:38 EDT 2006
Hello everybody,
I am almost new to Scipy. I was using the following in my code on 0.3.2
and it worked:
>>> mat=[[1,2,3],[4,5,6],[7,8,9]]
>>> import scipy
>>> scipy.cov(mat)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.4/site-packages/numpy/lib/function_base.py",
line 649, in cov
if (m.shape[0] == 1):
AttributeError: 'list' object has no attribute 'shape'
Now it is necessary to use always an array:
>>> amat = array(mat)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'array' is not defined
>>> amat = scipy.array(mat)
>>> scipy.cov(amat)
array([[ 9., 9., 9.],
[ 9., 9., 9.],
[ 9., 9., 9.]])
Is this better? If it is, (by no means I try to critize good work made
on scipy) maybe it would be better if 'cov' funtion checked the type
before begining, and throw an more meaningfull error. :-? Just a
suggestion.
Also I had problems because cov function returns an integer if matrix is
1x1. I have used this workarround but I am not sure if this is the best
way to work with Scipy. Any suggestions?
-----------------------------------------------------------
...
disp1 = scipy.cov(class1) #within class1 scatter matrix
disp2 = scipy.cov(class2) #within class2 scatter matrix
#We allways want covariance matrices even if they are 1 by 1
if not type(disp1) == type( scipy.array(0) ):
disp1 = scipy.array([[disp1]])
if not type(disp2) == type( scipy.array(0) ):
disp2 = scipy.array([[disp2]])
aux = scipy.add(disp1,disp2)
aux = scipy.divide(aux,2)
...
-----------------------------------------------------------
--
Regards,
Antonio Arauzo Azofra
More information about the SciPy-User
mailing list