🧠 NumPy Cheatsheet¶

Author: Thomas Uhuru¶

Quick reference for essential NumPy operations for data analysis and machine learning.

In [1]:
import numpy as np

1️⃣ Creating Arrays¶

In [2]:
a = np.array([1, 2, 3])
In [3]:
b = np.array([[1, 2, 3], [4, 5, 6]])
In [4]:
np.zeros((2, 3))          # array of zeros
Out[4]:
array([[0., 0., 0.],
       [0., 0., 0.]])
In [5]:
np.ones((3, 2))           # array of ones
Out[5]:
array([[1., 1.],
       [1., 1.],
       [1., 1.]])
In [6]:
np.full((2, 2), 7)        # array filled with a specific value
Out[6]:
array([[7, 7],
       [7, 7]])
In [7]:
np.eye(3)                 # identity matrix
Out[7]:
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
In [8]:
np.arange(0, 10, 2)       # [0, 2, 4, 6, 8]
Out[8]:
array([0, 2, 4, 6, 8])
In [9]:
np.linspace(0, 1, 5)      # 5 evenly spaced numbers between 0 and 1
Out[9]:
array([0.  , 0.25, 0.5 , 0.75, 1.  ])
In [10]:
np.random.rand(2, 3)      # uniform distribution [0, 1)
Out[10]:
array([[0.02495197, 0.98294104, 0.20571258],
       [0.93860538, 0.38355154, 0.41996503]])
In [11]:
np.random.randn(2, 3)     # normal distribution
Out[11]:
array([[ 2.09079877,  0.96125555,  1.81546539],
       [-0.35591796,  0.83701535, -1.22897951]])
In [12]:
np.random.randint(0, 10, (2, 3))  # random integers
Out[12]:
array([[0, 5, 3],
       [6, 6, 5]], dtype=int32)

2️⃣ Array Inspection¶

In [81]:
arr = np.array([[1, 2, 3], [4, 5, 6]])
In [14]:
arr.shape
Out[14]:
(2, 3)
In [15]:
arr.ndim
Out[15]:
2
In [16]:
arr.size
Out[16]:
6
In [17]:
arr.dtype
Out[17]:
dtype('int64')

3️⃣ Array Reshaping¶

In [18]:
arr.reshape(3, 2)
Out[18]:
array([[1, 2],
       [3, 4],
       [5, 6]])
In [19]:
arr.flatten()
Out[19]:
array([1, 2, 3, 4, 5, 6])
In [83]:
arr.T
Out[83]:
array([[1, 4],
       [2, 5],
       [3, 6]])
In [21]:
arr.ravel()
Out[21]:
array([1, 2, 3, 4, 5, 6])

4️⃣ Indexing and Slicing¶

In [22]:
a = np.array([10, 20, 30, 40, 50])
In [23]:
a[0]
Out[23]:
np.int64(10)
In [24]:
a[-1]
Out[24]:
np.int64(50)
In [25]:
a[1:4]
Out[25]:
array([20, 30, 40])
In [26]:
a[::2]
Out[26]:
array([10, 30, 50])
In [27]:
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
In [28]:
b[0, 0]
Out[28]:
np.int64(1)
In [29]:
b[:, 1]
Out[29]:
array([2, 5, 8])
In [30]:
b[1, :]
Out[30]:
array([4, 5, 6])
In [31]:
b[0:2, 1:3]
Out[31]:
array([[2, 3],
       [5, 6]])
In [32]:
# Boolean indexing
In [33]:
b[b > 5]
Out[33]:
array([6, 7, 8, 9])

5️⃣ Arithmetic Operations¶

In [34]:
x = np.array([1, 2, 3])
In [35]:
y = np.array([4, 5, 6])
In [36]:
x + y
Out[36]:
array([5, 7, 9])
In [37]:
x - y
Out[37]:
array([-3, -3, -3])
In [38]:
x * y
Out[38]:
array([ 4, 10, 18])
In [39]:
x / y
Out[39]:
array([0.25, 0.4 , 0.5 ])
In [40]:
x ** 2
Out[40]:
array([1, 4, 9])
In [41]:
np.sqrt(x)
Out[41]:
array([1.        , 1.41421356, 1.73205081])

6️⃣ Matrix Operations¶

In [42]:
A = np.array([[1, 2], [3, 4]])
In [43]:
B = np.array([[5, 6], [7, 8]])
In [44]:
A @ B
Out[44]:
array([[19, 22],
       [43, 50]])
In [45]:
np.dot(A, B)
Out[45]:
array([[19, 22],
       [43, 50]])
In [46]:
np.transpose(A)
Out[46]:
array([[1, 3],
       [2, 4]])
In [47]:
np.linalg.inv(A)
Out[47]:
array([[-2. ,  1. ],
       [ 1.5, -0.5]])
In [48]:
np.linalg.det(A)
Out[48]:
np.float64(-2.0000000000000004)
In [49]:
np.linalg.eig(A)
Out[49]:
EigResult(eigenvalues=array([-0.37228132,  5.37228132]), eigenvectors=array([[-0.82456484, -0.41597356],
       [ 0.56576746, -0.90937671]]))

7️⃣ Aggregate Functions¶

In [50]:
a = np.array([[1, 2, 3], [4, 5, 6]])
In [51]:
np.sum(a)
Out[51]:
np.int64(21)
In [52]:
np.mean(a)
Out[52]:
np.float64(3.5)
In [53]:
np.median(a)
Out[53]:
np.float64(3.5)
In [54]:
np.std(a)
Out[54]:
np.float64(1.707825127659933)
In [55]:
np.var(a)
Out[55]:
np.float64(2.9166666666666665)
In [56]:
np.min(a)
Out[56]:
np.int64(1)
In [57]:
np.max(a)
Out[57]:
np.int64(6)
In [58]:
np.argmin(a)
Out[58]:
np.int64(0)
In [59]:
np.argmax(a)
Out[59]:
np.int64(5)
In [60]:
np.sum(a, axis=0)
Out[60]:
array([5, 7, 9])
In [61]:
np.sum(a, axis=1)
Out[61]:
array([ 6, 15])

8️⃣ Stacking & Splitting¶

In [62]:
x = np.array([[1, 2], [3, 4]])
In [63]:
y = np.array([[5, 6], [7, 8]])
In [64]:
np.hstack((x, y))
Out[64]:
array([[1, 2, 5, 6],
       [3, 4, 7, 8]])
In [65]:
np.vstack((x, y))
Out[65]:
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])
In [66]:
np.concatenate((x, y), axis=1)
Out[66]:
array([[1, 2, 5, 6],
       [3, 4, 7, 8]])
In [67]:
np.split(np.arange(10), 2)
Out[67]:
[array([0, 1, 2, 3, 4]), array([5, 6, 7, 8, 9])]
In [68]:
np.array_split(np.arange(10), 3)
Out[68]:
[array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8, 9])]

9️⃣ Broadcasting¶

In [69]:
a = np.array([[1, 2, 3], [4, 5, 6]])
In [70]:
b = np.array([1, 2, 3])
In [71]:
a + b
Out[71]:
array([[2, 4, 6],
       [5, 7, 9]])

🔟 Useful Utilities & File I/O¶

In [72]:
np.unique(a)
Out[72]:
array([1, 2, 3, 4, 5, 6])
In [73]:
np.sort(a)
Out[73]:
array([[1, 2, 3],
       [4, 5, 6]])
In [74]:
np.argsort(a)
Out[74]:
array([[0, 1, 2],
       [0, 1, 2]])
In [75]:
np.clip(a, 2, 5)
Out[75]:
array([[2, 2, 3],
       [4, 5, 5]])
In [76]:
np.where(a > 3, 'high', 'low')
Out[76]:
array([['low', 'low', 'low'],
       ['high', 'high', 'high']], dtype='<U4')
In [77]:
np.savetxt('array.csv', a, delimiter=',')
In [78]:
np.loadtxt('array.csv', delimiter=',')
Out[78]:
array([[1., 2., 3.],
       [4., 5., 6.]])
In [79]:
np.save('array.npy', a)
In [80]:
np.load('array.npy')
Out[80]:
array([[1, 2, 3],
       [4, 5, 6]])