Introduction to NumPy
Efficient Numerical Computations in Python
Presented by: Atul Nag
What is NumPy?
Why Use NumPy?
import numpy as np
import time
list_data = list(range(1000000))
start = time.time()
list_result = [x * 2 for x in list_data]
end = time.time()
print("Python list time:", end - start)
arr = np.arange(1000000)
start = time.time()
numpy_result = arr * 2
end = time.time()
print("NumPy time:", end - start)
Creating Arrays
# Basic array
arr = np.array([1, 2, 3])
# Predefined arrays
zeros = np.zeros((2, 3))
ones = np.ones((3, 2))
random_arr = np.random.random((2, 2))
Inspecting Arrays
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("Shape:", arr.shape)
print("Size:", arr.size)
print("Data type:", arr.dtype)
print("Number of dimensions:", arr.ndim)
Indexing and Slicing
arr = np.array([[1, 2, 3], [4, 5, 6]])# Access specific element
print(arr[0, 1])
# Slice
print(arr[:, 1])
# Boolean indexing
print(arr[arr > 3])
Array Operations
arr = np.array([1, 2, 3])
print(arr + 2)
matrix = np.ones((3, 3))
vector = np.array([1, 2, 3])
print(matrix + vector)
print(np.sum(arr))
print(np.mean(arr))
Linear Algebra
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
print(np.dot(matrix1, matrix2))
print(matrix1 @ matrix2)
print(matrix1.T)
Reshaping and Resizing
arr = np.arange(6)
reshaped = arr.reshape((2, 3))
print(reshaped)
flattened = reshaped.flatten()
print(flattened)
Stacking and Splitting
arr1 = np.array([1, 2])
arr2 = np.array([3, 4])
print(np.vstack((arr1, arr2)))
print(np.hstack((arr1, arr2)))
arr = np.array([1, 2, 3, 4])
print(np.split(arr, 2))
Masking and Filtering
arr = np.array([1, 2, 3, 4, 5])
mask = arr > 3
print(arr[mask])
Practical Examples
data = np.array([[1, 0, 1], [0, 1, 1], [1, 1, 0]])
print(np.sum(data, axis=0))
Resources