Introduction to NumPy

Getting your Trinity Audio player ready...

If you’ve worked with Python for data analysis, machine learning, or scientific computing, you’ve definitely heard of NumPy — short for Numerical Python.
It’s one of the most powerful and foundational libraries in the Python ecosystem, designed for fast mathematical computations, array manipulations, and linear algebra operations.

Introduction to Numpy

Let’s dive in step by step and understand what NumPy is, why it’s so important, and how you can master it with simple examples.


What is NumPy?

NumPy is a Python library used for working with arrays.
It provides high-performance, multidimensional array objects and tools for working with them.

While Python lists can store elements of different types, they are slow and inefficient when handling large amounts of data. NumPy, on the other hand, allows operations on large datasets efficiently and quickly.

Think of NumPy as the backbone of data science in Python — powering libraries like Pandas, Scikit-learn, TensorFlow, and Matplotlib.


Why Use NumPy?

Here’s why NumPy is preferred over traditional Python lists:

FeaturePython ListNumPy Array
Memory UsageHighLow
SpeedSlowerFaster (uses C backend)
TypeCan hold mixed data typesHolds homogeneous data
OperationsElement-wise operation not supportedElement-wise operations supported
Mathematical FunctionsLimitedExtensive (trigonometry, stats, linear algebra, etc.)

Example:

import numpy as np

list1 = [1, 2, 3, 4, 5]
arr1 = np.array([1, 2, 3, 4, 5])

print(list1 * 2)   # Repeats list
print(arr1 * 2)    # Multiplies each element by 2

Output:

[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
[ 2  4  6  8 10]

See the difference?
NumPy performs vectorized operations — applying a function to all elements at once, without loops!


Installing NumPy

If you haven’t installed it yet, open your terminal or command prompt and type:

pip install numpy

To verify the installation:

import numpy
print(numpy.__version__)

Creating NumPy Arrays

There are several ways to create NumPy arrays.

1. From a Python List

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)

2. Multi-dimensional Array

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

3. Using Built-in Functions

np.zeros((2,3))   # 2x3 matrix with zeros
np.ones((3,3))    # 3x3 matrix with ones
np.arange(1,10,2) # numbers from 1 to 9 with step 2
np.linspace(0,1,5) # 5 numbers evenly spaced between 0 and 1

Array Attributes

Once you create an array, you can check its properties:

arr = np.array([[1,2,3],[4,5,6]])
print(arr.ndim)   # Number of dimensions
print(arr.shape)  # Shape of array
print(arr.size)   # Total number of elements
print(arr.dtype)  # Data type

Array Indexing and Slicing

Indexing and slicing in NumPy are similar to lists, but more powerful.

arr = np.array([10, 20, 30, 40, 50])
print(arr[0])     # First element
print(arr[-1])    # Last element
print(arr[1:4])   # Elements from index 1 to 3

For 2D arrays:

arr2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr2[1, 2])     # Row 1, Column 2
print(arr2[:, 1])     # All rows, Column 1
print(arr2[0:2, 1:3]) # Rows 0-1, Columns 1-2

Read More: Python Tutorials


Mathematical Operations

NumPy allows element-wise mathematical operations easily:

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

print(arr1 + arr2)
print(arr1 - arr2)
print(arr1 * arr2)
print(arr1 / arr2)
print(arr1 ** 2)

Useful Mathematical Functions

FunctionDescriptionExample
np.sum()Sum of all elementsnp.sum(arr)
np.mean()Mean valuenp.mean(arr)
np.median()Median valuenp.median(arr)
np.std()Standard deviationnp.std(arr)
np.max() / np.min()Max and Minnp.max(arr)
np.sqrt()Square rootnp.sqrt(arr)

Example:

arr = np.array([10, 20, 30, 40, 50])
print(np.mean(arr))
print(np.std(arr))

Broadcasting in NumPy

Broadcasting lets you perform operations between arrays of different shapes.

arr = np.array([[1,2,3],[4,5,6]])
num = 10
print(arr + num)

NumPy “stretches” the scalar (10) to match the shape of the array — very efficient!


Array Reshaping

You can reshape an array without changing its data.

arr = np.arange(1, 13)
reshaped = arr.reshape(3, 4)
print(reshaped)

Combining and Splitting Arrays

1. Combining:

a = np.array([1,2,3])
b = np.array([4,5,6])
print(np.concatenate((a,b)))

2. Splitting:

arr = np.array([10,20,30,40,50,60])
print(np.split(arr, 3))

NumPy with Random Numbers

NumPy’s random module is handy for generating datasets.

from numpy import random

arr = random.randint(1, 100, size=5)
print(arr)

More examples:

random.rand(3)       # Random floats (0–1)
random.randn(2,3)    # Normal distribution
random.choice([1,2,3,4,5])  # Random choice

Filtering Arrays

You can use conditions to filter elements easily.

arr = np.array([10, 25, 30, 45, 50])
filter = arr > 30
print(arr[filter])

Output:

[45 50]

Practical Example: Analyze Student Marks

import numpy as np

marks = np.array([45, 67, 89, 90, 55, 77, 38])

print("Average Marks:", np.mean(marks))
print("Highest Marks:", np.max(marks))
print("Lowest Marks:", np.min(marks))

passed = marks[marks >= 50]
print("Students Passed:", len(passed))

This small snippet demonstrates how easily NumPy can handle real-world data like student marks.


Performance Comparison (List vs NumPy)

import numpy as np
import time

size = 1_000_000
L1 = list(range(size))
A1 = np.arange(size)

start = time.time()
[L1[i]*2 for i in range(size)]
print("Python List Time:", time.time() - start)

start = time.time()
A1*2
print("NumPy Array Time:", time.time() - start)

You’ll see NumPy runs 10–50x faster depending on the operation.


NumPy in Real Life

NumPy is widely used in:

  • Data Science & Analysis (Pandas, Scikit-learn)
  • Machine Learning (TensorFlow, PyTorch)
  • Image Processing (OpenCV, PIL)
  • Scientific Computation
  • Financial Data Modeling

Summary

ConceptDescription
Array CreationUsing np.array(), np.zeros(), np.arange() etc.
Attributes.shape, .ndim, .dtype, .size
OperationsElement-wise addition, subtraction, multiplication
SlicingExtract specific rows/columns
ReshapingChange array dimensions
BroadcastingOperate on arrays of different shapes
RandomGenerate random numbers for simulations
FilteringSelect data using conditions

Final Thoughts

NumPy makes Python faster, more powerful, and more expressive for data manipulation and analysis.
It’s the foundation for learning Pandas, Machine Learning, and Data Visualization.

Mastering NumPy will make your Python skills 10x stronger.
So, start experimenting with arrays, slicing, reshaping, and broadcasting — you’ll love how powerful and clean your code becomes.

What’s Next?

In the next post, we’ll learn about the Creating NumPy Arrays

Spread the love

Leave a Comment

Your email address will not be published. Required fields are marked *

Translate »
Scroll to Top