Unlock the power of data science in Python 

NumPy: The efficiency of C, the ease of Python

As you know, data science is super hot.  Whether you're analyzing data,  working as an engineer, or creating fancy machine-learning models, your job likely involves all sorts of mathematical operations.  

This sort of work requires fast, efficient processing. And thus, for years, people used the fastest-executing programming languages they could find — C, C++, and Java.  In many cases, they used specialized languages and tools, such as Matlab, which did the job but cost quite a lot.

In the last few years, Python has become the #1 language in data science.  This puzzles a lot of people, since Python is known for being friendly, but not for being efficient.

The key to this change is NumPy.  NumPy is a library that puts a thin Python shell over C arrays.  You thus get the ease of use of Python, but the efficiency (in both space and time) of C.  

What's the problem, then?

Not surprisingly, NumPy is wildly popular.  But learning to use it can take a bit of time, because it works so differently from built-in Python data structures.  Even if you're a master at Python's lists, tuples, and dictionaries, NumPy requires that you think in different ways. 

For example, Python lists can contain any type of data.  But NumPy arrays, because they're built on top of C, have a "dtype" associated with the entire array, describing what type of data they can (and cannot) hold.  Learning what types are available, and how to choose from among them, can take some time.

About this course

I've been teaching NumPy to companies around the world for close to a decade, and I've been teaching Python for even longer than that.  This course is a version of what I teach in to engineers in some of the world's most famous companies — but available to anyone with an Internet connection, and a desire to learn.

In 75 lessons and 60 exercises, I take you through each part of NumPy that you need in order to use it effectively.  I show you not just how to use NumPy, but why to use it, and in what ways you can use it more effectively.

After you take this course, you'll have a powerful new tool in your toolbox.  You'll be ready to take on data-analysis challenges in your current job, as well as apply for more challenging jobs down the line.

  • If you've heard that data science is exciting, but haven't had the tools yet to break into this hot area, then this NumPy course is the first step you need to take.
  • If you're a data scientist moving to Python from Matlab, Java, or C++, then this course will teach you the ins and outs of working with NumPy, to accomplish the same things as you did before but with far less code.
  • If you're a Python developer who wants to understand why everyone is always talking about NumPy, and possibly use it in your projects, then this course is for you.

Who am I?

I'm Reuven Lerner, a professional Python trainer.  I've been using Python since 1993, and have been teaching people to use it for more than two decades.

Just about every day, I travel to a different city, country, and company teaching engineers how to use Python.  My clients include:
  • Apple
  • ARM
  • Cisco
  • IBM
  • Intel
  • PayPal
  • VMWare
  • Western Digital

This course is a version of what I've taught numerous times around the world.  If you don't work for such a company, but want to benefit from the sort of training that they order for their engineers, then I'm confident this course will help you.

Money-back guarantee

I'm confident that you'll get a ton out of this NumPy course.  If you don't, then just e-mail me, and I'll refund your money.  No time limit, either — I trust that you're reasonable.

Frequently asked questions

How much Python do I need to know in order to take this course?

You actually don't need to know that much Python.  If you're comfortable with basic data types (ints, lists, tuples, strings, and dicts), then you're definitely ready.

That said, you'll get the most out of NumPy if you also have a good grounding in Python.  And so I'd suggest that you not only learn NumPy, but that you try to get a broader understanding of Python.  It'll help quite a bit, I promise!

What version of Python does the course use?

The latest one as of this writing, Python 3.7.  

What about Pandas?

I'm developing a separate (but similar) course about Pandas.  That said, you need to know NumPy in order to work with Pandas.  So this course will be a prerequisite for that one.

Are there any discounts available?

Yes, there are 3 discount options:

  • If you’re a student or pensioner, you get 20% off
  • If you live in any country outside the 30 wealthiest countries in the world, you can get a discount (email me for exact discount percentage)

If you’re eligible for any of these discounts, contact me via e-mail, and I'll be delighted to provide you with the appropriate coupon code.

What if I have other questions?

Then just e-mail me, at .  I'll be happy to answer!

What's included?

Video Icon 76 videos File Icon 25 files


Section 1: Introduction
2 mins
02 What is NumPy?
7 mins
03 Installing NumPy
10 mins
04 Importing NumPy
7 mins
Section 2: Basic NumPy arrays
NumPy course, section 2.ipynb
49.5 KB
05 What is a NumPy array?
5 mins
06 Creating NumPy arrays
9 mins
07 Exercises 1
1 min
291 Bytes
08 Exercise solutions 1
3 mins
09 Generating random arrays
5 mins
09a Random seeds.mp4
3 mins
10 Vectorized operations.mp4
6 mins
11 Vectorized operations with two arrays.mp4
3 mins
12 Commonly used methods.mp4
5 mins
13 Exercises 2.mp4
2 mins
471 Bytes
14 Exercise solutions 2.mp4
5 mins
Section 3: Indexing
NumPy course, section 3.ipynb
34.8 KB
15 Fancy indexing.mp4
4 mins
16 Boolean indexing.mp4
3 mins
17 Views vs copies.mp4
6 mins
18 Selecting with boolean indexes.mp4
6 mins
19 Evens and odds.mp4
3 mins
20 Exercises 3.mp4
2 mins
327 Bytes
21 Exercise solutions 3.mp4
4 mins
22 Complex conditions.mp4
7 mins
23 Exercises 4.mp4
1 min
224 Bytes
24 Exercise solutions 4.mp4
4 mins
25 Assigning via indexes.mp4
4 mins
26 Exercises 5.mp4
1 min
422 Bytes
27 Exercise solutions 5.mp4
5 mins
Section 4: Data types
NumPy course, section 4.ipynb
41.5 KB
28 dtypes
8 mins
29 Setting dtypes
7 mins
30 Setting the dtype attribute
4 mins
31 Using astype
4 mins
32 String lengths
3 mins
33 Exercises 6
2 mins
415 Bytes
34 Exercise solutions 6
5 mins
35 Complex numbers.mp4
3 mins
36 Booleans vs. integers.mp4
3 mins
37 Setting print options.mp4
5 mins
Section 5: nan
NumPy course, section 5.ipynb
28.2 KB
38 The need for nan.mp4
7 mins
39 Filtering with isnan.mp4
5 mins
40 Making sure that nan will work in your array.mp4
3 mins
41 Replacing nan values with the mean.mp4
3 mins
42 Exercises 7.mp4
1 min
214 Bytes
43 Exercise solutions 7.mp4
3 mins
44 inf and nan.mp4
5 mins
Section 6: Multidimensional NumPy
NumPy course, section 6.ipynb
72.7 KB
45 Array shapes.mp4
10 mins
46 Multi-dimensional retrievals.mp4
7 mins
47 Exercises 8.mp4
2 mins
374 Bytes
48 Exercise solutions 8.mp4
5 mins
49 Assigning to 2d arrays.mp4
7 mins
50 Axes and NumPy methods.mp4
6 mins
51 argmin and argmax.mp4
5 mins
52 Flattening arrays.mp4
4 mins
53 Transposing.mp4
3 mins
54 Sorting.mp4
6 mins
55 Concatenating arrays.mp4
5 mins
56 Exercises 9
1 min
461 Bytes
57 Exercise solutions 9
4 mins
Section 7: Input and output
58 Intro to NumPy IO
4 mins
59 Storing with
6 mins
60 Loading with np.load
4 mins
61 mmap_mode
5 mins
62 Saving and loading npz
6 mins
63 Storing CSV files with np.savetxt
5 mins
64 Loading CSV files with np.loadtxt
5 mins
65 Exercises 10.mp4
1 min
NumPy course, section 7.ipynb
51.4 KB
66 Exercise solutions 10.mp4
4 mins
Section 8: Matplotlib
NumPy course, section 8.ipynb
164 KB
67 Intro to Matplotlib.mp4
4 mins
68 Basic plots.mp4
5 mins
69 Format strings.mp4
4 mins
70 Bar plots.mp4
3 mins
71 Histograms.mp4
2 mins
72 Pie plots.mp4
2 mins
73 Exercises 11.mp4
2 mins
440 Bytes
1.3 KB
74 Exercise solutions 11.mp4
5 mins
Section 9: Conclusion
2 mins
PDFs of slides
01 Data science intro
386 KB
02 Jupyter notebook
269 KB
03 NumPy
96 KB
04 NumPy indexes
45.5 KB
05 NumPy's nan
36.2 KB
06 NumPy and multidimensional arrays
37.4 KB
07 NumPy and input-output
34.7 KB


I think you have an exceedingly rare crystal clear explanation of all things Python.

I really liked the way you went slow and explained everything in microscopic detail, acknowledging where the NumPy syntax is non-intuitive.

So many tutorials dive in and start piling on statements and commands, never really acknowledging that the syntax is unusual and a departure from regular Python syntax.  So as a non-pro Python person, I'm not worrying about whether my confusion comes from lack of fluency of Python (which I'm relieved to say it didn't) or from inexperience with Numpy (definitely the case, which you were able to elucidate).
David Punsalan
 This course was really useful. I got both the concept and systematic 
 understanding of the library.

I wish to have more hands on exercises and maybe a bit more complex tasks as a part of the learning process.

New knowledge already helped me much with my task at work.
Alexander Chilingaryan
I enjoyed the whole course. It was very engaging, helping me to gain deeper insights into NumPy, which shall  definitely help me step into the world of Data Science using Python.

I highly recommend this course to anyone who want to be Data Science aspirants.
Ashok Bharat