I'd like to share my review of the book Numpy 1.5 the Beginner's Guide by Ivan Idris, which is one of the latest books in a series of manuals covering scientific computing libraries written in Python. This book covers the Numpy library for manipulating vectors and matrices and support for mathematical libraries.
|Numpy 1.5 from Packt Publisher|
The book is a great and useful resource for anyone who wants to explore further the Numpy scientific library since it covers almost all of the modules available at Numpy 1.5. It comes with several examples, specially for finantial researchers and developers that work with finantial data. The author explored several modules using stocks and historical price data. The authors explains each function or operation with code and the expected results, so the reader can follow precisely what's happening when he presents the modules. One of the values of the book is how it is organized: the step-by-step guide when he presents complex functions at Numpy, for example: add.reduceat, add.accumulate and add.reduce operators.
The part that I didn't like was about the exercises which was quite simple. I'd like to see deep exercises exploring the resources given at the book and I missed more information about NaN values. Also, I didn't see information also about the functions squeeze, choose and about more complex structured arrays (arrays with tuples, etc.).
To sum up, I recommend this book for anyone whishing to learn about scientific computing with Python using the mathematical library Numpy which is a great alternative (and free !) for Matlab, Mathematica and other packages. I expect quite soon a book covering Scipy library also! By the way, the finantial fans will love this book since it covers almost of the entire book with examples using finance data!
The following chapters 2-4 presents the Numpy Fundamentals covering the array manipulations and most commonly used operations. The books goes into a cyclic process, where each function that the author presents goes through an introduction about the problem to solve, the actions (how you with Numpy can solve), auxiliar numpy functions and operations and finally what just happened, that is, explain what he has done after showing the solution. The examples covered at book, most of them, are from finantial data and stock market values. An interesting choice since he used the same examples through the chapters in a progression and logical way. Having each function and numpy featured described and explained made the book a good reference guide for someone using the library. There were minor issues related to the imports, he doesn't mention the imports in some examples, for instance the numpy.loadtxt function when he uses the datetime module. For a beginner that is studying Python for the first time, it may be harder to them to follow the examples, since he could not always tell where the functions or modules were coming from.
The second part of the book includes the matrices, universal functions, some scipy modules and the use of matplotlib and testing. The chapter 5 covers the matrix module and universal functions such as add, divide, prod, sum and so on. I missed some functions that weren't covered at this chapter such as numpy.choose or numpy.squeeze. I believe the author didn't remember or didn't have space to mention these specific functions, but it does not prejudice at all the quality of the book. The chapter that I liked the most at the book was about testing. Several developers, special the scientific researchers are not used to test their code, so I believe it is a great chapter for anyone who wants to assure quality and avoid future bugs using Numpy testing modules. The chapter should be more bigger and include more examples even creating test cases and tips for scientific developers.
Finally the last two chapters focus on plotting and Scipy integration. I think the plotting chapter should be at the beginning of the book, because he already uses lots of examples at the previous chapters with matplotlib and only at the end explain further about the library. The chapter is well-written and gives you sufficient content for beginning with Matplotlib. The last chapter covers the use of several scipy functions but it does not give deeper explanations about how it works as he did at the previous chapters with Numpy. However it gives several useful examples to work with integration, image processing and even optimization. Many developers will enjoy this extra-chapter covering the use of scipy+numpy.