A Primer on Scientific Programming with Python (Texts in Computational Science and Engineering)
Hans Petter Langtangen
Springer
I've always done scientific computing using Fortran but got curious and did some projects with Python.  I learned Python using online references.  Now as I read through this Primer I realize how many essential details I missed by gathering information randomly off the internet.  This book presents material clearly and in a comprehensive and logical manner.

Note that the emphasis is on teaching Python rather than numerical methods.  If your main focus is to learn techniques for scientific computing then you should look for a different book.

Python is a good language for learning to use object-oriented programming (OOP) and this book will make that easy.  On the other hand, the author didn't quite convince me that this approach is useful for scientific programming (but OOP is clearly quite useful elsewhere).

Overall I found the book very helpful - highly recommended.