Skip to content

Introduction to NumPy

NumPy (Numerical Python) is the most important library for numerical computing in Python.

It provides:

  • A fast, memory-efficient array object: ndarray
  • Vectorized operations (operate on whole arrays without Python loops)
  • Linear algebra, randomness, statistics, and more

NumPy is the foundation for many data tools:

  • Pandas
  • SciPy
  • Scikit-learn
  • Matplotlib

Python lists are flexible, but they’re not optimized for heavy numeric work.

NumPy arrays are fast because:

  • They store data in contiguous memory blocks
  • They have a fixed data type (dtype)
  • Many operations run in optimized C code under the hood
diagram Why NumPy beats a Python loop mermaid
Contiguous memory plus a fixed dtype let NumPy hand the whole array to a C loop instead of looping element-by-element in Python.
command
pip install numpy
command
conda install numpy

The standard import alias is np:

import
import numpy as np

Check version:

version
import numpy as np
print(np.__version__)
list
a = [1, 2, 3]
b = [4, 5, 6]
 
# This concatenates lists (not element-wise addition)
print(a + b)  # [1, 2, 3, 4, 5, 6]
array
import numpy as np
 
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
 
# Element-wise addition
print(a + b)  # [5 7 9]

A NumPy array is called an n-dimensional array (ndarray). It can represent:

  • 1D data (vector)
  • 2D data (matrix)
  • 3D+ data (tensors)

The shape tells you the number of rows/columns (dimensions):

shape
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)  # (2, 3)

dtype is the element type (int, float, etc.). Every value in an array shares the same dtype — that uniformity is exactly what makes vectorized math possible:

dtype
arr = np.array([1, 2, 3])
print(arr.dtype)

Imagine you have daily sales and want quick math:

sales
import numpy as np
 
sales = np.array([100, 120, 90, 150, 130])
 
print("Total:", sales.sum())
print("Average:", sales.mean())
print("Max:", sales.max())
print("Min:", sales.min())

NumPy will try to choose a single dtype. If you mix types, it may convert everything to strings.

Mistake 2: Using Python loops for large data

Section titled “Mistake 2: Using Python loops for large data”

NumPy is built for vectorization. Prefer array operations over for loops.

Continue to: NumPy Array Creation to learn all the ways to build arrays (from lists, zeros/ones, ranges, random data, and more).

Exercise 2 – Lists Concatenate, Arrays Add

Section titled “Exercise 2 – Lists Concatenate, Arrays Add”

pch.coffeeTagline

pch.coffeeCta

pch.feedbackHeading

pch.feedbackSubheading