Numpy
Numpy
Numpy - Numerical Python Numpy - is a python library which have inbuilt functions to perform operations on numerical data. Mostly numpy library functions used to perform operations on arrays. Array : array a collection of
similar data type items (homogeneous data items) Numpy arrays are 50x times faster than python list Numpy library is a foundation all other python libraries like pandas,scipy,matplotlib and so..
In [6]: # install numpy
# pip install numpy
In [4]: a
Out[5]: dtype('int64')
Out[13]: numpy.ndarray
Out[14]: (6,)
Out[15]: 6
Out[16]: 8
Out[17]: 1
Out[18]: 48
In [20]: L = [3,6,7,9,2,4]
a1 = np.array(L)
In [21]: a1
Creating 2D array
In [6]: a3 = np.array([[23,26,29],[8,6,9],[10,12,13]])
Out[7]: 2
In [8]: a3.shape
Out[8]: (3, 3)
In [9]: a3.size
Out[9]: 9
In [10]: a3.nbytes
Out[10]: 72
In [11]: a3.itemsize
Out[11]: 8
In [14]: a[0]
Out[14]: 23
In [15]: a[1]
Out[15]: 45
In [16]: a[-1]
Out[16]: 46
Out[17]: 12
In [18]: a[::]
In [39]: a
In [21]: a3
In [22]: a3[0,1]
Out[22]: 26
In [23]: a3[0,0]
Out[23]: 23
In [24]: a3[0,2]
Out[24]: 29
In [25]: a3[1,-1]
Out[25]: 9
In [26]: a3[-2,-1]
Out[26]: 9
In [27]: np.zeros(5)
In [28]: np.zeros([3,3])
In [30]: np.ones(4)
In [31]: np.ones([4,5])
In [36]: X = np.arange(1,30)
X
Out[36]: array([ 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 [35]: X[X%2==0]
Out[35]: array([ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28])
In [37]: X[X%2!=0]
Out[37]: array([ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29])
In [38]: np.linspace(1,100,10)
Out[38]: array([ 1., 12., 23., 34., 45., 56., 67., 78., 89., 100.])
In [39]: a
In [40]: a.sum()
Out[40]: 282
In [41]: a.max()
Out[41]: 89
In [42]: a.min()
Out[42]: 12
In [43]: np.median(a)
Out[43]: 45.5
In [ ]:
In [55]: np.arange(1,20)
Out[55]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19])
In [56]: c = np.arange(1,10)
print(c)
[1 2 3 4 5 6 7 8 9]
In [58]: c1 = np.arange(1,21)
c1[c1%2==0]
In [59]: c1[c1%2!=0]
In [61]: np.linspace(1,10,5)
In [65]: np.linspace(1,10,20)
In [67]: np.linspace(1,100,20)
In [68]: #full()
In [69]: np.full(5,10)
In [70]: #repeat()
np.repeat(5,10)
operations on 1D arrays
In [71]: a
In [72]: #sum
a.sum()
Out[72]: 282
Out[74]: 12
Out[75]: 89
Out[76]: 3
In [77]: a
Out[78]: 4
In [80]: a.mean()
Out[80]: 47.0
Out[81]: 45.5
In [44]: np.random.random(10)
In [45]: np.random.random(30)
In [46]: np.random.random([5,5])
In [47]: np.random.random(25).reshape([5,5])
In [48]: np.random.randint(1,100,5)
In [57]: np.random.seed(4)
np.random.randint(2000,4000,10)
Out[57]: array([3146, 2174, 2439, 2709, 3921, 2360, 3623, 2456, 2818, 2393])
In [58]: np.random.seed(4)
np.random.randint(2000,4000,10)
Out[58]: array([3146, 2174, 2439, 2709, 3921, 2360, 3623, 2456, 2818, 2393])
In [56]: np.linspace(1,20,5)
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [55]: np.random.random(10)
In [86]: np.random.random(10)
In [87]: np.random.random(10)
In [89]: np.random.seed(23)
np.random.random(10)
In [93]: np.random.seed(23)
np.random.random(10)
In [95]: np.random.randint(100,500,2)
In [97]: np.random.seed(2)
np.random.randint(1000,1500,1)
Out[97]: array([1168])
In [98]: np.random.seed(2)
np.random.randint(1000,1500,1)
Out[98]: array([1168])
Operations on 2D array
In [59]: a = np.array([[3,4,5],[6,7,8],[9,6,3]])
In [60]: a
In [61]: a.sum()
Out[61]: 51
In [62]: a.min()
Out[62]: 3
In [63]: a.max()
Out[63]: 9
In [64]: a.mean()
Out[64]: 5.666666666666667
In [65]: np.median(a)
Out[65]: 6.0
In [66]: a.sum(axis=1)
In [67]: a.sum(axis=0)
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [100… a
Out[101]: 51
Out[102]: 3
Out[103]: 9
In [105… a
In [107… a
Out[111]: 5.666666666666667
Out[112]: 6.0
In [113… #variance
a.var()
Out[113]: 4.0
Out[114]: 2.0
In [117… b
In [118… len(b)
Out[118]: 15
In [119… b.ndim
Out[119]: 1
In [120… np.reshape(b,[5,3])
In [123… ran_values
Out[123]: array([265, 295, 258, 272, 293, 268, 261, 290, 257, 284])
In [124… np.reshape(ran_values,[2,5])
In [125… #create an array of values ranges from 200 to 300 and return only even
# numbers
values = np.arange(200,301)
In [126… values
Out[126]: array([200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
291, 292, 293, 294, 295, 296, 297, 298, 299, 300])
In [127… values[values%2==0]
Out[127]: array([200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224,
226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250,
252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276,
278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300])
In [69]: a
Out[69]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19])
In [72]: np.where(a%2==0,100,a)
Out[72]: array([ 1, 100, 3, 100, 5, 100, 7, 100, 9, 100, 11, 100, 13,
100, 15, 100, 17, 100, 19])
In [73]: a
Out[73]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19])
In [76]: np.where(a%2!=0,200,a)
Out[76]: array([200, 2, 200, 4, 200, 6, 200, 8, 200, 10, 200, 12, 200,
14, 200, 16, 200, 18, 200])
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [129… a
Out[129]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19])
In [132… np.where(a%2==0,0,a)
In [134… np.where(a%2!=0,'odd',a)
Out[134]: array(['odd', '2', 'odd', '4', 'odd', '6', 'odd', '8', 'odd', '10', 'odd',
'12', 'odd', '14', 'odd', '16', 'odd', '18', 'odd'], dtype='<U21')
In [135… b = np.array([10,10,10,30,45,67,10,89,10,30,10,67])
In [137… b
Out[137]: array([10, 10, 10, 30, 45, 67, 10, 89, 10, 30, 10, 67])
In [139… np.where(b==10,999,b)
Out[139]: array([999, 999, 999, 30, 45, 67, 999, 89, 999, 30, 999, 67])
In [140… np.put(b,[0,1,2],[99,999,999])
In [141… b
Out[141]: array([ 99, 999, 999, 30, 45, 67, 10, 89, 10, 30, 10, 67])
In [143… a
Out[143]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19])
In [144… np.put(a,[0,2,5],[1000])
In [145… a
In [149… a
In [150… a.astype(int)
In [151… a.astype(str)
In [153… a
In [161… a
Out[162]: False
In [165… a
In [166… b
In [167… np.vstack([a,b])
In [171… np.where(a==b) #
In [ ]: # a1 = np.arange(1,60)
a1[np.where ((a1>20) & (a1<35))]
Out[180]: array([10, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 40,
50])
In [182… A
In [184… np.isin(A,[10,11])
In [185… A[np.isin(A,[10,11])]
In [186… A[np.isin(A,[50,60])]
reverse an array
In [187… a = np.arange(1,10)
In [188… a
In [189… a[::-1]
In [193… a = np.array([[34,56,78],[67,12,45],[89,79,90]])
In [194… a
In [197… a[:,::-1]
In [198… a
In [200… a[::-1,::-1]
In [201… a
sorting an array
In [203… a = np.array([23,12,1,34,9,56,11])
In [204… a
In [205… np.sort(a)
In [206… b = np.array([[34,56,78],[67,12,45],[89,79,90]])
In [207… b
In [210… np.sort(b,axis=1)
In [212… np.unique(a)
In [214… #Generate random 30 integers between 100 to 300 and return the numbers
#which are divisible by 4 and inbetween 150 to 250
In [215… N = np.random.randint(100,300,30)
In [216… N
Out[216]: array([277, 195, 175, 147, 163, 131, 248, 224, 216, 137, 267, 295, 202,
104, 270, 207, 151, 203, 138, 133, 158, 224, 167, 169, 188, 296,
146, 298, 195, 221])
In [218… #Generate 100 random numbers and return the values which are greater
#than 0.2 and less than 0.5
In [220… n = np.random.random(100)
Indentity matrix
In [225… np.eye(4)
In [226… np.eye(6)
diagonal Matrix
In [227… np.diag([1,2,3,4])
In [228… np.diag([10,20,30])
Matrix Addition
In [232… a = np.arange(10,20)
a1 = np.reshape(a,[5,2])
b = np.arange(30,40)
b1 = np.reshape(b,[5,2])
In [233… a1
In [234… b1
In [235… a1 + b1
In [237… a
In [238… b = np.array([10,20,30])
In [239… b
In [240… a+b
In [241… c = np.arange(10,30).reshape(4,5)
In [242… c
Out[243]: array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29])
Out[244]: array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29])
In [245… c
In [246… c.flatten()
Out[246]: array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29])
Transpose of a matrix
In [247… a = np.array([[3,4,5],[5,6,7]])
In [248… np.transpose(a)
In [255… c = np.arange(20,30).reshape(5,2)
In [258… b,c
In [259… b * c
Append arrays
In [260… a = np.array([3,4,5])
b = np.array([6,7,8])
np.append(a,b)
Out[262]: '1.23.5'
In [263… #write a code to test none of the elements in an array are zero
In [264… a
In [266… a.all()
Out[266]: True
In [267… b = np.array([0,3,4,5])
b.all()
Out[267]: False
In [272… a = np.arange(10,26).reshape([4,4])
In [273… a
In [274… b = np.array([1,2,3,4])
In [275… a+b
In [276… a = np.array([[1,2,3],[4,5,6]])
In [277… a
In [278… b = np.array([1,2,3])
In [279… a,b
In [280… a*b
In [281… # w.a.numpy code to add an ones matrix to a 3x3 matrix and show
#resultant matrix as flattend array
In [283… a = np.arange(1,10).reshape([3,3])
In [284… a
In [287… O = np.ones(9).reshape([3,3])
In [288… O
In [290… result
In [291… result.flatten()
Out[291]: array([ 2., 3., 4., 5., 6., 7., 8., 9., 10.])
In [292… np.ones([3,3])
In [296… result
Out[296]: array([ 2., 3., 4., 5., 6., 7., 8., 9., 10.])
In [297… np.full([3,3],7)
In [299… a
Out[299]: array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
In [300… a[1:-1,1:-1]=0
In [301… a
Out[301]: array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
W.a. numpy code to create a 5x5 zero matrix with the elements on the diagonal equal to 1,2,3,4,5
In [302… np.diag([1,2,3,4,5])
In [303… #create a 3x3 matrix of random integers between 30 - 50 and add (1x3) matrix of random
#numbers(integers) between 1 - 10.
In [305… a = np.random.randint(30,50,9).reshape([3,3])
b = np.random.randint(1,10,3)
a+b
In [306… a
In [307… b
In [308… a*b
In [309… a,b
In [310… #generate a random values matrix of size 10x10 and add ones matrix of same size , return all
#rows expect last row
In [322… result
In [325… a = np.ones([10,10])
In [326… b = np.random.random(100).reshape([10,10])
In [328… c = a+b
c[:-1]
In [329… #w.a. numpy code to extract all numbers from a given array less and greater than a specified
#number
In [330… a = np.arange(1,21).reshape([4,5])
In [333… a
In [331… a[a>10]
Out[331]: array([11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
In [332… a[a<10]
In [334… #write numpy code to replace all numbers in a given array which is equal,less and greater
#to a given number
In [335… #array of integers range from 100 - 200 of size 10x10, and specified value is 150
In [337… a = np.arange(100,200).reshape([10,10])
In [340… np.where(a>150,1000,a)
Out[340]: array([[ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109],
[ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119],
[ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129],
[ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139],
[ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149],
[ 150, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
[1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
[1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
[1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
[1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000]])
In [341… np.where(a<150,100,a)
Out[341]: array([[100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
[100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
[100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
[100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
[100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
[150, 151, 152, 153, 154, 155, 156, 157, 158, 159],
[160, 161, 162, 163, 164, 165, 166, 167, 168, 169],
[170, 171, 172, 173, 174, 175, 176, 177, 178, 179],
[180, 181, 182, 183, 184, 185, 186, 187, 188, 189],
[190, 191, 192, 193, 194, 195, 196, 197, 198, 199]])
In [342… np.where(a==150,10,a)
Out[342]: array([[100, 101, 102, 103, 104, 105, 106, 107, 108, 109],
[110, 111, 112, 113, 114, 115, 116, 117, 118, 119],
[120, 121, 122, 123, 124, 125, 126, 127, 128, 129],
[130, 131, 132, 133, 134, 135, 136, 137, 138, 139],
[140, 141, 142, 143, 144, 145, 146, 147, 148, 149],
[ 10, 151, 152, 153, 154, 155, 156, 157, 158, 159],
[160, 161, 162, 163, 164, 165, 166, 167, 168, 169],
[170, 171, 172, 173, 174, 175, 176, 177, 178, 179],
[180, 181, 182, 183, 184, 185, 186, 187, 188, 189],
[190, 191, 192, 193, 194, 195, 196, 197, 198, 199]])
In [344… result
Out[344]: array([[ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
[ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
[ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
[ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
[ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
[ 10, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
[1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
[1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
[1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
[1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000]])
In [345… #write numpy code to create a 4x4 array (A), now create a new array from the A array swapping
#first and last, second and third columns
In [348… a = np.arange(16).reshape([4,4])
In [349… a
In [350… a[:,::-1]
In [351… #write numpy code to swap rows and cols of a given array in reverse order
In [352… a
In [353… a[::-1,::-1]
In [363… a = np.arange(10,20).reshape([5,2])
b = np.arange(15,25)
len(a),len(b)
In [358… a
Out[358]: array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
In [359… b
Out[359]: array([15, 16, 17, 18, 19, 20, 21, 22, 23, 24])
In [361… for i in a:
print(i,end=' ')
10 11 12 13 14 15 16 17 18 19
In [364… a
In [368… a.shape
Out[368]: (5, 2)
In [369… L = a.shape
In [370… L[0]
Out[370]: 5
In [371… L[1]
Out[371]: 2
In [372… a
10
11
12
13
14
15
16
17
18
19
10
11
12
13
14
15
16
17
18
19
In [376… #write numpy code to iterate over 2D array and return values which are divisible by 4 and
#greater than 25
#a = np.arange(12,60).reshape([12,4])
28
32
36
40
44
48
52
56
creating a 3D array
In [390… a = np.array([[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]],[[10,11,12],[13,14,15],[16,17,18]]])
In [391… a
In [396… a = np.array([[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]]])
In [397… a
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]])
In [398… a.ndim
Out[398]: 3
In [399… a.shape
Out[399]: (3, 3, 3)
In [400… #write a program to create a 2d array of shape (8,5) of random numbers. select random
#numbers from a normal distribution
In [411… np.random.randn(40).reshape([8,5])
In [404… np.random.random(10)
In [405… np.random.uniform(10,20,5)
In [77]: a = np.arange(10,20).reshape([5,2])
In [81]: st.mode(a)
/var/folders/nn/9bkkh7612wg2c3gglt0zd9h40000gn/T/ipykernel_80656/1319879173.py:1: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default
behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis`
over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.
st.mode(a)
Out[81]: ModeResult(mode=array([[10, 11]]), count=array([[1, 1]]))
In [84]: st.mode(a)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[84], line 1
----> 1 st.mode(a)
In [93]: a = np.array([20,30,40,30,30,90,78,5,5,5,10,10,10])
In [94]: st.mode(a)
Out[94]: 30
In [ ]: