The SVD documentation seems a bit misleading.  It says:

Factors the matrix a as u * np.diag(s) * v, where u and v are unitary 
and s is a 1-d array of a‘s singular values.

However, that only is true (i.e., you just have to do np.diag(s) to get 
S) in general if full_matrices is False, which is not the default. 
Otherwise, you have to something like in the first example in the docstring.

I'm not sure what the right fix is here.  Changing the default for 
full_matrices seems too drastic.  But then having u*np.diag(s)*v in the 
first line doesn't work if you have a rectangular matrix.  Perhaps the 
first line could be changed to:

Factors the matrix a as u * S * v, where u and v are unitary and S is a 
matrix with shape (a.shape[0], a.shape[1]) with np.diag(S)=s, where s is 
a 1-d array of a‘s singular values.

It sounds more confusing that way, but at least it's correct.

Maybe even better would be to add a shape option to np.diag, and then 
just make the first line of the svd docstring say 
u*np.diag(s,shape=(a.shape[0],a.shape[1]))*v


Jason
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to