1. Home
  2. Docs
  3. Kelas Privat Python – 01
  4. Materi [Basic Library]
  5. Pengenalan Numpy

Pengenalan Numpy

Numpy adalah sebuah package yang bekerja pada bahasa pemograman python. Numpy merupakan kependekan dari Numerical Python. Seperti pada namanya numpy biasa digunakan untuk mengolah data numerik/saintifik. Data yang diolah dapat berupa multidimensional array.

Pada awalnya Jim Hugunin mengembangkan Numeric, nenek moyang dari Numpy. Lalu pada tahun 2015, Travis Oliphant Mengembangkan Numpy, dengan memasukkan semua fitur dari pendahulunya, Numarray ke dalam sebuah package pengolahan numerik.

Dengan menggunakan Numpy, seorang programmer dapat melakukan berbagai macam pengolahan numerik, diantaranya:

  • Operasi matematika dan logik dalam sebuah array,
  • Melakukan fourier transform, dan,
  • Melakukan operasi aljabar linear.

Pada umumnya penggunaan numpy disatukan dengan Scipy dan Matplotlib dan digunakan sebagai pengganti dari MatLab. Lisensi open source yang dimiliki oleh Numpy juga menjadi kelebihannya tersendiri.

Untuk dapat menggunakan numpy pertama kita harus melakukan instalasi terlebih dahulu. Jalankan pada terminal kode berikut ini.

pip install numpy

Setelah itu kita bisa memanggil numpy dengan menggunakan perintah import pada file python yang kita inginkan.

import numpy

Array

Object paling penting yang selalu digunakan dalam operasi menggunakan numpy adalah array. Seperti list pada python, array merupakan sebuah vraiabel yang memiliki lebih dari satu anggota. Pada numpy array ini dapat berbentuk lebih dari satu dimensi atau sering disebut dengan N-dimensional array (ndarray).

Pada array ini kita dapat melakukan operasi vektor atau matriks yang biasanya kita lakukan pada sebuah persamaan matematika.

Pembuatan ndarray paling dasar adalah dengan menggunakan metode numpy.array()

a = np.array([1,2,3]) 
print (a)

hasilnya

[1 2 3]
a = np.array([[1, 2], [3, 4]]) 
print (a)

Hasilnya

[[1 2]
 [3 4]]

Ada beberapa parameter yang bisa digunakan pada metode ini,

dtype : tipe array yang diinginkan

ndmin: minimum dimensi yang diinginkan.

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

Hasilnya

[[1 2 3 4 5]]

Ada beberapa tipe data yang didukung oleh numpy diantaranya adalah :

Bool

Int

float_

float64

Numpy juga mendukung beberapa tipe data lain yang tidak didukung secara langsung oleh python, seperti bilangan kompleks dan intc.

Selain array object, numpy juga memiliki data type object. Biasa digunakan untuk menginisasi tipe data dari suatu array. Syntax yang digunakan

numpy.dtype()
a dt = np.dtype(np.int32) 
print (dt)

Hasilnya

int32

Conntoh penggunaannya diperlihatkan pada kode dibawah. Pertama kita akan coba menginisasi objek tipe data.

dt = np.dtype([('age',np.int32)]) 
print (dt)

Hasilnya

[('age', '<i4')]

Sekarang mari kita masukkan pada array yang kita miliki

a = np.array([10,20,30], dtype = dt)
print (a)

Hasilnya

[(10,) (20,) (30,)]

Sekarang kita dapat langsung melakukan akses ke key ‘age’

print (a['age'])

Hasilnya

[10 20 30]

Setiap objek array juga memiliki atribut yang dapat kita gunakan untuk mengetahui dan mengubah karakteristik suatu objek array.

Ndarray.shape digunakan untuk mengetahui bentuk dari array yang kita miliki

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

Hasilnya

(2, 3)

Selain itu, shape juga digunakan untuk mengubah dimensi dari array itu sendiri.

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

Hasilnya

[[1 2]
 [3 4]
 [5 6]]

Untuk mengubah selain dengan shape juga bisa dengan menggunakan reshape.

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

Hasilnya

[[1 2]
 [3 4]
 [5 6]]

Membuat Array

Selain menggunakan numpy.array() kita juga dapat menggunakan berbagai macam metode untuk membuat array tergantung pada nilai inisiasi array tersebut.

Numpy.empty() – digunakan untuk membuat array dengan bentuk tertentu dan isi bebas.

Numpy.zeros() – digunakan untuk membuat array dengan anggota bernilai 0

Numpy.ones() – digunakan untuk membuat array dengan anggota bernilai 1

Numpy.arange() – digunakan untuk membuat array dari range numerik.

Numpy.linspace – digunakan untuk membuat array dengan nilai merupakan pembagian rata antara nilai awal dan akhir.

a = np.empty([3,2], dtype = int)
print(a)

#satu dimensi
b = np.zeros(5) 
print (b)

#multidimensi
c = np.zeros((5,5)) 
print (c)

Hasilnya

[[1 2]
 [3 4]
 [5 6]]

[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.]]
#satu dimensi
b = np.ones(5) 
print (b)

#multidimensi
c = np.ones((5,5)) 
print (c)

Hasilnya

[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.]]

Indexing & Slicing

Untuk melakukan akses terhadap array dapat kita lakukan dengan menggunakan indexing dan slicing karena array merupakan suatu objek yang mengikuti aturan zero based index. Aturan slicing pada array mengikuti aturan slicing pada list.

Pertama mari kita siapkan objek array yang akan kita gunakan,

a = np.arange(10)

Untuk mengakses anggota kita dapat menggunakan nilai indexnya.

b = a[5]
print (a)
print (b)

Hasilnya

[0 1 2 3 4 5 6 7 8 9]
5

Untuk melakukan slicing kita dapat menggunakan metode slice(), Atau kita dapat melakukan slicing langsung dengan menggunakan tanda titik dua.

s = slice(2,7,2) 
print (a[s])
print (a[2:])

Hasilnya

[2 3 4 5 6 7 8 9]

Untuk mengakses data kolom kita dapat menggunakan ellipsis,

print(a[...,0])

Hasilnya

[1 3 4]

Broadcasting

Broadcasting adalah kemampuan numpy untuk memproses dua array yang berbeda bentuk dalam proses aritmatika. Proses artimatika biasanya dilakukan dengan korespondensi satu-satu dari setiap anggotanya. Untuk array dengan bentuk yang sama ini dapat dilakukan dengan mudah.

a = np.array([1,2,3,4]) 
b = np.array([10,20,30,40]) 
c = a * b 
print (c)

Hasilnya

[ 10  40  90 160]

Contoh dari broadcasting diperlihatkan di bawah ini

a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]]) 
b = np.array([1.0,2.0,3.0])  
   
print ('First array:' )
print (a) 
print ('\n')  
   
print ('Second array:') 
print (b) 
print ('\n')  
   
print ('First Array + Second Array') 
print (a + b)

Hasilnya

First array:
[[ 0.  0.  0.]
 [10. 10. 10.]
 [20. 20. 20.]
 [30. 30. 30.]]


Second array:
[1. 2. 3.]


First Array + Second Array
[[ 1.  2.  3.]
 [11. 12. 13.]
 [21. 22. 23.]
 [31. 32. 33.]]

Iterating over Array

Akses bisa dilakukan secara sekaligus dengan menggunakan iterasi terhadap objek numpy yang dimiliki. Untuk hal tersebut kita dapat menggunakan metode nditer().


a = np.arange(0,60,5)
a = a.reshape(3,4)

print 'Original array is:'
print a
print '\n'

print 'Modified array is:'
for x in np.nditer(a):
   print (x)

Hasilnya

Original array is:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

Modified array is:
0 5 10 15 20 25 30 35 40 45 50 55

Kita juga dapat melakukan iterasi pada dua array yang dilakukan boardcast. Ini dapat membuat pengertian kita tentang broadcast lebih baik.

a = np.arange(0,60,5) 
a = a.reshape(3,4) 

print 'First array is:' 
print a 
print '\n'  

print 'Second array is:' 
b = np.array([1, 2, 3, 4], dtype = int) 
print b  
print '\n' 

print 'Modified array is:' 
for x,y in np.nditer([a,b]): 
   print ("%d:%d" % (x,y))

Hasilnya

First array is:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

Second array is:
[1 2 3 4]

Modified array is:
0:1 5:2 10:3 15:4 20:1 25:2 30:3 35:4 40:1 45:2 50:3 55:4

Operasi Matematika

Numpy memiliki kelebihan untuk memproses operasi matematika. Contoh jenis operasi matematika yang bisa kita lakukan menggunakan numpy adalah trigonometri dan pembulatan.

Pada trigonometri nilai yang digunakan adalah pi radian, maka dari itu pastikan sudut yang kita masukkan dikalikan pi dan dibagi 180.

a = np.array([0,30,45,60,90]) 

print 'Sine of different angles:' 
# Convert to radians by multiplying with pi/180 
print np.sin(a*np.pi/180) 
print '\n'  

print 'Cosine values for angles in array:' 
print np.cos(a*np.pi/180) 
print '\n'  

print 'Tangent values for given angles:' 
print np.tan(a*np.pi/180) 

Hasilnya

Sine of different angles:                                                     
[ 0.          0.5         0.70710678  0.8660254   1.        ]

Cosine values for angles in array:
[  1.00000000e+00   8.66025404e-01   7.07106781e-01   5.00000000e-01
   6.12323400e-17]

Tangent values for given angles:                                              
[  0.00000000e+00   5.77350269e-01   1.00000000e+00   1.73205081e+00
   1.63312394e+16]

Pada pembulatan dilakukan dengan menggunakan tiga metode, numpy.around(), numpy.floor(), dan numpy.ceil().

Numpy.around() – digunakan untuk membulatkan dengan presisi berapa decimal di belakang koma, aturan yang diterapkan adalah yang kita tahu dengan nilai batas 5

Numpy.floor – digunakan saat kita ingin melakukan pembulatan ke bawah.

Numpy.ceil dilakukan saat kita ingin melakukan pembulatan ke atas.

a = np.array([-1.77, 1.33, -0.22, 0.55, 10])
print (np.around(a, decimals = 1))
print (np.floor(a))
print (np.ceil(a))

Hasilnya

[-1.8  1.3 -0.2  0.6 10. ]
[-2.  1. -1.  0. 10.]
[-1.  2. -0.  1. 10.]

Operasi Aritmatika

Pada operasi aritmatika salah satu yang bisa kita lakukan dengan numpy adalah aritmatika dasar dan pemangkatan.

a = np.arange(9, dtype = np.float_).reshape(3,3) 

print 'First array:' 
print a 
print '\n'  

print 'Second array:' 
b = np.array([10,10,10]) 
print b 
print '\n'  

print 'Add the two arrays:' 
print np.add(a,b) 
print '\n'  

print 'Subtract the two arrays:' 
print np.subtract(a,b) 
print '\n'  

print 'Multiply the two arrays:' 
print np.multiply(a,b) 
print '\n'  

print 'Divide the two arrays:' 
print np.divide(a,b)

Hasilnya

First array:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

Second array:
[10 10 10]

Add the two arrays:
[[ 10. 11. 12.]
 [ 13. 14. 15.]
 [ 16. 17. 18.]]

Subtract the two arrays:
[[-10. -9. -8.]
 [ -7. -6. -5.]
 [ -4. -3. -2.]]

Multiply the two arrays:
[[ 0. 10. 20.]
 [ 30. 40. 50.]
 [ 60. 70. 80.]]

Divide the two arrays:
[[ 0. 0.1 0.2]
 [ 0.3 0.4 0.5]
 [ 0.6 0.7 0.8]]

Untuk pemangkatan dilakukan dengan metode power()

a = np.array([10,100,1000]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying power function:' 
print np.power(a,2) 
print '\n'  

print 'Second array:' 
b = np.array([1,2,3]) 
print b 
print '\n'  

print 'Applying power function again:' 
print np.power(a,b)

Hasilnya

Our array is:                                                                 
[  10  100 1000]

Applying power function:
[    100   10000 1000000]

Second array:
[1 2 3]

Applying power function again:
[        10      10000 1000000000]

Operasi Statistika

Pada operasi statistika kita bisa mencari nilai maksimum dan minimum dengan menggunakan metode amin() dan amax()

a = np.array([[3,7,5],[8,4,3],[2,4,9]]) 
print (np.amin(a))
print (np.amax(a))

Hasilnya

2
9

Kita juga dapat mencari Nilai tengah dan rata-rata dengan menggunakan metode mean() dan median().

print (np.mean(a))
print (np.median(a))

Hasilnya

5.0
4.0

Bahan Bacaan

https://numpy.org/doc/stable/