When one is dealing with numerical methods, there are many good reasons to do so using free/open numerical tools ... But, whether you happen to be doing "real" work for a company or to be a PhD candidate, too often you are confronted with the dilemma of investing your time in learning alternative and more productive ways of doing your work (i.e. the promising combination python/NumPy) and actually having your work done by the due date.
As a PhD student myself, article reviewing, code debugging, data analysis and other obligations and deadlines have been so far the reason not to get the grips with NumPy ... until I found Mr. Idris's "NumPy - Beginner's guide"!
Personally, I find the most remarkable feature of the book to be the good compromise the author has found between:
* the amount and relevance of the information offered,
* the clarity of the exposition and
* the immediate applicability of the information provided.
As a first remark, the book covers many of the most recurrent techniques I need to use during my research activity, and thus the book can very well serve as a reference. However, do not mistake the book as yet another "How To" guide, or a simple "Cook-Book": far from that, you see an evident and conscious effort to lead the reader through different capabilities of NumPy in a bottom-up, constructive manner: this is a book you can actually learn from.
Another highlight of the book is the early focus on data processing from text files. Instead of presenting this feature in an arcane manner detached from other features (as is often the case in many programming guides), the author presents briefly but in enough detail the text-file-processing capabilities of NumPy intertwined with several statistical analysis tools.
Of course, there is a space devoted to most common procedures for linear algebra, signal processing, efficient sorting algorithms, ...
Yet another success of the book concerns the graphical representation of information; the book devotes a full chapter to matplotlib and to explain how to produce the most common graphs needed to effectively communicate one's work . This does not prevent the author to use matplotlib if needed in previous chapters, offering in any of such occasions at least the minimal explanation of what is being done.
To conclude, I believe this book can help users/developers of numerical methods to become independent and proficient users of NumPy: a reader minimally familiar with the python syntax will be able, in very short time, to port her/his existing numerical tools into NumPy, thus acquiring the experience needed to devise new, more efficient tools taking advantage of the advantages of the python/NumPy duo.