Many libraries have nice and easy to use APIs. All you need to do is to invoke the provided API function and library will handle the rest of it for you. What's happening under the hood is not your concern and you are only interested in output. This is fine for most cases, however it's important to understand at least the basic internal of a library you are using. Understanding internals will help you to grasp what's going on with your code and what are the red flags that you should avoid while developing your applications.
In this chapter, NumPy internals will be reviewed such as NumPy's type hierarchy and memory usage. At the end of this chapter, you will learn about the code profiling to inspect your programs line by line.