I'm giving this book five stars because it was basically written for me. I don't mean that literally, of course. I say that because the usual methods of googling for answers and reading the manual do not work when you are trying to push the limits of what a tool is capable of doing. I do numerical computations for a variety of things -- finding patterns in large data sets, automating data collection and analysis, converting raw serial output into convenient CSV, plotting multidimensional datasets etc. Over the years, I have collected a large number of productivity habits with Matlab, which allows me to do ridiculously convoluted things in a short period of time. You just have to read the introduction of any Python manual to understand why I am switching from Matlab to Python. The problem is -- what will replace all these productivity habits? They need to be replaced with "Pythonic" habits, something that can take years of practice.
The beauty about Langtangen's book is that it runs through every one of those techniques. Instead of giving a basic example (what your google search would have provided) or a complete list of, ahem, useless techniques (what the manual would have provided), you get exactly what a seasoned data analyst needs to know to get moving with state-of-the-art commands. The author also discusses optimizations and alternatives in each chapter.
The book is also the best source for explaining *why* NumPy should be used by people working with large datasets. Folks love to create toolkits for Python, but some of these are a list of non-intuitive shortcuts that don't provide a substantial improvement over basic Python. Langtangen goes through the pain of explaining the benefits of the package (chapter 4.1.4), so that you can decide for yourself if NumPy is useful for your application.
I will not comment on the parts of the book that deal with C and FORTRAN integration because I leave that to more able programmers. I also will not comment on the extensive GUI building chapters because I do not build GUIs. I will point out, though, that I have derived full value out of this book simply by reading, and re-reading chapters 2, 3, 4 and 8. Some will argue that there is too much "basic Python" in these chapters for the whole to be considered advanced computational science -- my opinion is that even when the author describes "basic Python", his examples and intuition make it so that even one who has read a couple of reference books cover-to-cover will learn something about using "basic Python" to perform numerical analysis in a more efficient way. In fact, the book is a testament to doing really convoluted things in a really compact and elegant manner!
less
0 comments
Post a comment