Hi, I am catching up with an assigned task that I slipped. I am wondering a few 
things about the numpy.linalg.eig() API (eigvals() is also included in this 
discussion, but for simplicity let's focus on eig()). AFAIU the purpose of 
eig() is for handling general eigen-systems which have left and right 
eigenvectors (that could differ beyond transpose/conjugate). For this, I have 
two questions:

1. What's the history of NumPy adding this eig() routine? My guess would be 
NumPy added it because Matlab had it, but I couldn't tell from a quick commit 
search.
2. Would it be possible to deprecate/remove this API? From past discussions 
with users and developers, I found:
- numpy.linalg.eig() only returns the right eigenvectors, so it's not very 
useful:
  * When the left eigenvectors are not needed --- which is the majority of the 
use cases --- eigh() is the right routine, but most users (especially those 
transitioning from Matlab) don't know it's there
  * When the left eigenvectors are needed, users have to use scipy.linalg.eig() 
anyway
- A general support for eig() could be challenging (numerical issues), and 
doing SVDs instead is usually the better way out (in terms of both numerical 
stability and mathematical sense).

Thanks,
Leo
_______________________________________________
NumPy-Discussion mailing list -- numpy-discussion@python.org
To unsubscribe send an email to numpy-discussion-le...@python.org
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: arch...@mail-archive.com

Reply via email to