Unit2 - NumPy - Jupyter Notebook
Unit2 - NumPy - Jupyter Notebook
Agenda
What is Numpy ?
Installation of Numpy
Attributes of NumPy
Basic methods
Basic operations
Points to Remember
1. NumPy arrays have a fixed size at creation, unlike Python lists (which can grow dynamically). Changing the size of an ndarray will create a new array and delete the
original.
2. The elements in a NumPy array are all required to be of the same data type, and thus will be the same size in memory. The exception: one can have arrays of
(Python, including NumPy) objects, thereby allowing for arrays of different sized elements.
3. NumPy arrays facilitate advanced mathematical and other types of operations on large numbers of data. Typically, such operations are executed more efficiently and
with less code than is possible using Python’s built-in sequences.
Installation of matplotlib
pip install matplotlib
Installation of pandas
pip install pandas
import numpy as np
Creating an array
In [21]:
<class 'numpy.ndarray'>
[2 3 4]
ndarray(array) attributes
ndarray.ndim - the number of axes (dimensions) of the array.
ndarray.shape - the dimensions of the array. This is a tuple of integers indicating the size of the array in each dimension.
ndarray.dtype - an object describing the type of the elements in the array. One can create or specify dtype’s using standard Python types. Additionally NumPy
provides types of its own. numpy.int32, numpy.int16, and numpy.float64 are some examples.
ndarray.itemsize- the size in bytes of each element of the array.
ndarray.size - the total number of elements of the array. This is equal to the product of the elements of shape.
In [22]:
arr.ndim
Out[22]:
In [23]:
arr.shape
Out[23]:
(3,)
In [20]:
arr.dtype
Out[20]:
dtype('int32')
In [21]:
arr.itemsize
Out[21]:
In [22]:
arr.size
Out[22]:
In [28]:
a = np.array(1, 2, 3, 4) # Error
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_12688/2326401496.py in <module>
----> 1 a = np.array(1, 2, 3, 4) # Error
In [29]:
a = numpy.array([1,2,3,4]) # Error
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_12688/259882583.py in <module>
----> 1 a = numpy.array([1,2,3,4]) # Error
In [32]:
a = np.array[1,2,3,4] # Error
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_12688/2601176658.py in <module>
----> 1 a = np.array[1,2,3,4] # Error
In [36]:
a = np.array()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_12688/1326429237.py in <module>
----> 1 a = np.array()
In [37]:
a = np.array([1,2,3],[4,5,6])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_12688/2132018308.py in <module>
----> 1 a = np.array([1,2,3],[4,5,6])
In [24]:
arr = np.array([1,2,3])
arr
Out[24]:
array([1, 2, 3])
In [25]:
Out[25]:
array([1, 2, 3])
In [26]:
Out[26]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [27]:
arr2 = np.arange(10)
arr2
Out[27]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [58]:
arr3 = np.arange(10,20)
arr3
Out[58]:
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
In [59]:
arr4 = np.arange(10,20,2)
arr4
Out[59]:
In [60]:
arr5 = np.arange(0,10,0.5)
arr5
Out[60]:
In [30]:
arr6 = np.linspace(0,2,10)
print(arr6)
print(arr6.size)
In [32]:
arr1 = np.array([1,2,3,4,5],dtype=int)
print(arr1)
[1 2 3 4 5]
In [33]:
arr2 = np.array([1,2,3,4,5],dtype=float)
arr2
Out[33]:
In [34]:
arr2 = np.array([1,2,3,4,5],dtype=complex)
arr2
Out[34]:
In [91]:
arr3 = np.zeros(10)
arr3
Out[91]:
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
In [38]:
arr3 = np.ones(10)
arr3
Out[38]:
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
In [40]:
[1. 0. 0. 1.]
Creating 1D arrays
In [41]:
arr_1d =np.array([1,2,3,4,5,6])
print(arr_1d)
[1 2 3 4 5 6]
In [42]:
arr_1d = np.asarray([1,2,3,4,5,6])
print(arr_1d)
[1 2 3 4 5 6]
In [43]:
print(arr_1d.ndim)
print(arr_1d.shape)
print(arr_1d.size)
print(arr_1d.itemsize)
1
(6,)
6
4
np.array() Vs np.asarray()
In [237]:
arr1 =np.array([1,2,3,4,5,6])
print(arr1)
a = np.array(arr1)
arr1[0]=10
print(a)
[1 2 3 4 5 6]
[1 2 3 4 5 6]
In [238]:
arr1 =np.asarray([1,2,3,4,5,6])
print(arr1)
a = np.asarray(arr1)
arr1[0]=10
print(a)
[1 2 3 4 5 6]
[10 2 3 4 5 6]
Accessing 1D arrays
In [109]:
print(arr_1d)
[1 2 3 4 5 6]
In [44]:
In [45]:
[2 3 4 5 6]
In [117]:
[1 3]
In [46]:
1 2 3 4 5 6
In [47]:
for i in range(arr_1d.size):
print(arr_1d[i],end=' ')
1 2 3 4 5 6
In [272]:
for i in np.nditer(arr_1d):
print(i,end=" ")
1 2 3 4 5 6
Creating 2D arrays
In [48]:
arr_2d =np.array([[1,2,3],[3,4,5]])
print(arr_2d)
[[1 2 3]
[3 4 5]]
In [55]:
print(arr_2d.ndim)
print(arr_2d.shape)
print(arr_2d.size)
print(arr_2d.itemsize)
2
(2, 3)
6
4
Accessing 2D arrays
In [56]:
1
3
In [58]:
for i in range(arr_2d.shape[0]):
for j in range(arr_2d.shape[1]):
print(arr_2d[i][j],end=' ')
print()
1 2 3
3 4 5
In [59]:
for i in np.nditer(arr_2d):
print(i,end=" ")
1 2 3 3 4 5
In [247]:
[1 2 3]
[[1 2 3]
[3 4 5]]
In [63]:
[1 3]
[[1 2 3]
[3 4 5]]
Creating 3D arrays
In [252]:
arr_3d =np.array([[[1,2,3],[3,4,5]]])
print(arr_3d)
[[[1 2 3]
[3 4 5]]]
In [253]:
print(arr_3d.ndim)
print(arr_3d.shape)
print(arr_3d.size)
print(arr_3d.itemsize)
3
(1, 2, 3)
6
4
Basic methods
reshape()
In [69]:
arr = np.array([1,2,3,4,5,6])
print(arr)
[1 2 3 4 5 6]
In [70]:
arr1 = arr.reshape(1,6)
print(arr1)
[[1 2 3 4 5 6]]
In [72]:
arr2 = arr.reshape(1,2,3)
print(arr2)
[[[1 2 3]
[4 5 6]]]
In [77]:
arr3 = np.arange(20).reshape(5,4)
In [78]:
print(arr3)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
zeroes()
In [286]:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
In [79]:
arr = np.zeros(20).reshape(5,4)
print(arr)
print(arr[0].dtype)
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
float64
ones()
In [295]:
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
In [296]:
arr = np.ones(20).reshape(5,4)
print(arr)
print(arr[0].dtype)
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
float64
full()
In [82]:
[100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100
100 100]
In [84]:
[[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]]
(20, 10)
random.function_name()
In [87]:
arr = np.random.randint(10,20,10)
print(arr)
[13 13 14 10 11 15 18 13 10 17]
In [91]:
arr = np.random.rand(5)
print(arr)
In [328]:
arr = np.random.randn(5,5)
print(arr)
In [94]:
arr = np.random.random_integers(5,10,size=(5,5))
print(arr)
[[ 9 6 10 6 6]
[ 7 6 8 5 6]
[ 8 7 9 9 9]
[ 8 5 7 8 10]
[ 8 9 10 5 6]]
In [96]:
arr = np.random.random((5))
print(arr)
In [98]:
arr = np.random.choice(10,5)
print(arr)
arr = np.random.choice(['s','r','jdfjakf','sjfdaj'],20)
print(arr)
[1 9 7 3 6]
['r' 'r' 'jdfjakf' 'r' 'r' 'jdfjakf' 's' 's' 'jdfjakf' 'r' 'jdfjakf'
'jdfjakf' 'r' 'r' 'r' 'r' 'r' 'r' 's' 's']
In [100]:
arr = np.arange(20)
print(arr)
np.random.shuffle(arr)
print(arr)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
[ 1 17 11 5 8 2 15 3 14 7 10 0 16 9 6 4 19 13 18 12]
vstack()
In [101]:
arr1 = np.arange(20).reshape(5,4)
print(arr1)
arr2 = np.arange(20).reshape(5,4)
print(arr2)
np.vstack((arr1,arr2))
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
Out[101]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]])
hstack()
In [102]:
arr1 = np.arange(20).reshape(5,4)
print(arr1)
arr2 = np.arange(20).reshape(5,4)
print(arr2)
np.hstack((arr1,arr2))
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
Out[102]:
array([[ 0, 1, 2, 3, 0, 1, 2, 3],
[ 4, 5, 6, 7, 4, 5, 6, 7],
[ 8, 9, 10, 11, 8, 9, 10, 11],
[12, 13, 14, 15, 12, 13, 14, 15],
[16, 17, 18, 19, 16, 17, 18, 19]])
arr = np.arange(20)
print(arr)
np.append(arr,30)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
Out[104]:
In [105]:
arr = np.arange(20)
print(arr)
a = np.append(arr,[10,203,33])
print(a)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
18 19 10 203 33]
In [106]:
arr = np.arange(20)
print(arr)
a = np.insert(arr,3,[10,203,33])
print(a)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
[ 0 1 2 10 203 33 3 4 5 6 7 8 9 10 11 12 13 14
15 16 17 18 19]
delete()
In [110]:
arr = np.arange(20)
print(arr)
a = np.delete(arr,5)
print(a)
a = np.delete(arr,[2,3,4])
print(a)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
[ 0 1 2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
[ 0 1 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
where()
In [114]:
arr = np.arange(20)
print(arr)
arr1 = np.where(arr>10)
print(arr1)
print(arr1[0])
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
(array([11, 12, 13, 14, 15, 16, 17, 18, 19], dtype=int64),)
[11 12 13 14 15 16 17 18 19]
Basic operations
In [421]:
arr1 = np.arange(10,20).reshape(2,5)
print(arr1)
print(arr1+10)
print(arr1-10)
print(arr1*10)
print(arr1/12)
print(arr1//2)
print(arr1**2)
[[10 11 12 13 14]
[15 16 17 18 19]]
[[20 21 22 23 24]
[25 26 27 28 29]]
[[0 1 2 3 4]
[5 6 7 8 9]]
[[100 110 120 130 140]
[150 160 170 180 190]]
[[0.83333333 0.91666667 1. 1.08333333 1.16666667]
[1.25 1.33333333 1.41666667 1.5 1.58333333]]
[[5 5 6 6 7]
[7 8 8 9 9]]
[[100 121 144 169 196]
[225 256 289 324 361]]
In [422]:
arr1 = np.arange(10,20).reshape(2,5)
print(arr1)
arr2 = np.arange(10,20).reshape(2,5)
print(arr2)
print(np.add(arr1,arr2))
[[10 11 12 13 14]
[15 16 17 18 19]]
[[10 11 12 13 14]
[15 16 17 18 19]]
[[20 22 24 26 28]
[30 32 34 36 38]]
In [424]:
arr1 = np.arange(10,20).reshape(2,5)
print(arr1)
arr2 = np.arange(10,20).reshape(2,5)
print(arr2)
print(np.subtract(arr1,arr2))
[[10 11 12 13 14]
[15 16 17 18 19]]
[[10 11 12 13 14]
[15 16 17 18 19]]
[[0 0 0 0 0]
[0 0 0 0 0]]
In [425]:
arr1 = np.arange(10,20).reshape(2,5)
print(arr1)
arr2 = np.arange(10,20).reshape(2,5)
print(arr2)
print(np.multiply(arr1,arr2))
[[10 11 12 13 14]
[15 16 17 18 19]]
[[10 11 12 13 14]
[15 16 17 18 19]]
[[100 121 144 169 196]
[225 256 289 324 361]]
In [426]:
arr1 = np.arange(10,20).reshape(2,5)
print(arr1)
arr2 = np.arange(10,20).reshape(2,5)
print(arr2)
print(np.divide(arr1,arr2))
[[10 11 12 13 14]
[15 16 17 18 19]]
[[10 11 12 13 14]
[15 16 17 18 19]]
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
In [4]:
arr1 = np.arange(10,20).reshape(2,5)
print(arr1)
arr2 = np.arange(10,20).reshape(2,5)
print(arr2)
print(arr1*arr2)
[[10 11 12 13 14]
[15 16 17 18 19]]
[[10 11 12 13 14]
[15 16 17 18 19]]
[[100 121 144 169 196]
[225 256 289 324 361]]
In [8]:
arr1 = np.arange(10,20).reshape(2,5)
print(arr1)
arr2 = np.arange(10,20).reshape(5,2)
print(arr2)
print(arr1@arr2)
print(arr1.dot(arr2))
[[10 11 12 13 14]
[15 16 17 18 19]]
[[10 11]
[12 13]
[14 15]
[16 17]
[18 19]]
[[ 860 920]
[1210 1295]]
[[ 860 920]
[1210 1295]]
In [115]:
arr2 = np.arange(10,20).reshape(5,2)
print(arr2)
print(arr2.T)
[[10 11]
[12 13]
[14 15]
[16 17]
[18 19]]
[[10 12 14 16 18]
[11 13 15 17 19]]
In [116]:
arr2 = np.array([[1,0],[0,1]])
print(arr2)
print(np.linalg.inv(arr2))
[[1 0]
[0 1]]
[[1. 0.]
[0. 1.]]
In [117]:
arr1 = np.arange(10,20).reshape(2,5)
print(arr1)
arr2 = np.arange(10,20).reshape(2,5)
print(arr2)
print(np.array_equal(arr1,arr2))
[[10 11 12 13 14]
[15 16 17 18 19]]
[[10 11 12 13 14]
[15 16 17 18 19]]
True
In [118]:
arr1 = np.arange(10,20).reshape(2,5)
print(np.exp(arr1))
In [430]:
arr1 = np.arange(10,20).reshape(2,5)
print(np.sqrt(arr1))
In [432]:
arr1 = np.arange(10,20).reshape(2,5)
print(np.min(arr1))
10
In [433]:
arr1 = np.arange(10,20).reshape(2,5)
print(np.max(arr1))
19
In [434]:
arr1 = np.arange(10,20).reshape(2,5)
print(np.mean(arr1))
14.5
In [435]:
arr1 = np.arange(10,20).reshape(2,5)
print(np.median(arr1))
14.5
In [437]:
arr1 = np.arange(10,20).reshape(2,5)
print(np.sum(arr1))
145
In [445]:
arr1 = np.array([10,2,532,32,3,23])
print(np.sort(arr1))
[ 2 3 10 23 32 532]
In [447]:
arr1 = np.array([[10,2,532],[32,3,23]])
print(np.sort(arr1,axis=1))
[[ 2 10 532]
[ 3 23 32]]
In [448]:
arr1 = np.array([[10,2,532],[32,3,23]])
print(np.sort(arr1,axis=0))
[[ 10 2 23]
[ 32 3 532]]
In [449]:
arr1 = np.array([[10,2,532],[32,3,23]])
print(np.sort(arr1))
[[ 2 10 532]
[ 3 23 32]]
import pandas as pd
In [124]:
In [125]:
Out[125]:
In [461]:
df.shape
Out[461]:
(10000, 3)
In [126]:
In [127]:
x = np.arange(10)
y = np.arange(10,20)
z = np.arange(20,30)
print(x)
print(y)
print(z)
[0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]
In [128]:
plt.scatter(y,x,c='g',marker='*',s=100)
plt.scatter(z,x,c='r',s=100)
plt.show()
In [ ]: