Hii, ketemu lagi nih. hari ini saya mau me-share suatu pengalaman saya membuat bermacam operasi matriks tanpa menggunakan library "Numpy". Numpy ? apaan tuh ? jadi Numpy adalah singkatan dari Numerical python yang merupakan library yang dapat melakukan "scientific computing", atau simpelnya Library Numpy dapat membantu kita untuk melakukan perhitungan matematika yang rumit. Nah bagi kalian yang sudah lama membuat, ataupun belajar program di bahasa pemrograman python pasti sudah tidak asing lagi nih.. dengan Library Numpy ini.
Pada kasus kita akan menggunakan Library Numpy terlebih dahulu supaya dapat tergambar oleh kita, bagaimana Numpy ini bekerja. karena Studi kasus ini tentang "Matriks", maka kita akan menggunaan Operasi pada matriks, pada kali ini kita akan menggunakan 3 Operasi, yaitu Transpose Matriks, Pertambahan Matriks, Perkalian Matriks.
oh ya hampir lupa, untuk dapat meggunakan library numpy, we simply just type :
Nah kalau sudah di Import, baru deh kita bisa menggunakan Library pada numpy ini.
Selanjutnya saya akan mencoba membuat 3 program dengan menggunakan Numpy, tentang operasi pada matriks yang sebelumnya saya singgung, yaitu : Pertambahan Matriks, Perkalian Matriks, dan Transpose Matriks.
1 . Pertambahan Matriks
Hasil :
[[2 5]
[5 8]]
2 . Perkalian Matriks
Hasil :
3 . Transpose Matriks
Hasil :
[[1 3]
[2 4]]
Yaa, ketiga program diatas merupakan tiga dari banyaknya operasi yang bisa menggunakan Numpy. Mudahkan ??, dengan hanya mengimport library numpy, dan menggunakan fungsi .array() yang ada pada Numpy kita sudah bisa melakukan operasi pada matriks yang bisa dibilang sulit dilakukan jika tidak memakai bantuan library numpy.
Tapi karena saya suka men-challange diri saya sendiri (hahahaha), saya akan membuat program yang melakukan operasi matriks, seperti ketiga contoh diatas, tanpa menggunakan library Numpy dan akan menganalisa setiap "line" yang saya deklarasikan. yaudah mulai aja yaa
1 . Pertambahan Matriks
Saya akan memberi gambaran besar program nya terlebih dahulu :
jadi seperti inilah program saya dalam membuat operasi pertambahan pada matriks. Disclaimer, ini adalah code pribadi, jadi mungkin anda menemukan ketidak efektifan algoritma, ataupun code code yang tidak perlu, tapi di deklarasikan pada program. Mari kita mulai :
Pada Code block pertama, saya memberi contoh untuk matriks [[1,2][3,4]] dan matriks [[1,5],[2,4]], yang masing masing di tugaskan ke variabel "arr1" dan "arr2". untuk variabel "arr3" berisi array yang kosong, karena di code block selanjutnya akan diisi oleh iterasi dari operasi matriks.
Next, kita punya variabel rows dan cols. rows menunjukan banyaknya baris pada matriks, sedangkan cols menunjukan banyaknya kolom pada matriks. disini nilai dari rows dan cols sama, yaitu 2. kenapa 2??, karena matriks yang saya definisikan sebelumnya memiliki 2 baris dan 2 kolom. Oke kita lanjut
Pada code block kali ini saya menggunakan metode nested for-loop untuk mengiterasi setiap elemen pada array. untuk range(rows) saya letakkan diatas range(cols), karena saya akan menambahkan elemen matriks per kolom, lalu akan dilanjutkan per baris.
Saya menambahkan variabel res di dalam nested for loop dengan tujuan untuk menyimpan hasil pertambahan daripada elemen - elemen matriks. alasan variabel res di letakkan di dalam nested for loop, bukannya di luar loop, supaya value dari variabel res akan menjadi kosong pada saat perulangan berakhir
pada block ke 4, saya menambahkan value res pada perulangan ke dalam array "arr3", dengan menggunakan fungsi array yaitu .append().
pada nested for-loop ini nantinya akan mengisi array arr3, dengan elemen yang sudah dihasilkan pada variabel res local scope looping, jadi setelah ini arr3 sudah tidak merupakan array kosong lagi.
Pada code block pertama, saya mendeklarasi kan variabel finalArr, yang dimana variabel ini berisi array yang dihasilkan dari fungsi yang ada di dalam array tersebut. pada kasus ini nilai dari finalArr = [[0,0],[0,0]]. lohh mengapa finalArr diisi oleh 0? Jadi disini saya mencoba untuk menyiapkan suatu bentuk array 2 dimensi, yang dimana array 2 dimensi ini akan ditempatkan oleh masing masing elemen pada array arr3 yang berbentuk array 1 dimensi. jadi poinnya iterasi diatas hanya untuk mengubah array 1 dimensi menjadi 2 dimensi.
Selanjutnya saya menyiapkan variabel k = 0 untuk difungsikan sebagai "counter" nantinya. variabel k tersebut akan dipakai pada perulangan berikutnya
Next, adalah perulangan yang saya singgung di awal, yang intinya dapat mengubah array dimensi 1 menjadi array dimensi 2. Setelah perulangan ini, variabel finalArr akan terisi oleh array dimensi 2
yang bukan berisi [[0,0],[0,0]] lagi tapi berisi [[2,7],[5,8]] yang merupakan hasil pertambahan dari matriks pada arr1 dan arr2.
jadi nilai arr1 + arr3 = [[2, 7], [5, 8]] :)
2 . Perkalian Matriks
gambaran besar :
Program berikut merupakan program yang memuat code yang belum di sederhanakan, jadi mohon maaf apabila terlalu panjang atau pun tidak efisien.
Seperti sebelumnya, saya menyiapkan 3 variabel yaitu arr1, arr2, arr3 untuk diisi array. Saya juga mendeklarasikan variabel rows, cols. bedanya saya kali ini memuat variabel baru, yaitu rows2 yang memiliki value 4.
Next, saya membuat nested loop seperti sebelumnya, tetapi saya membuat 3 variabel untuk loop. karena ini perkalian dot matriks, maka saya kira saya membutuhkan 3 variabel untuk perulangan. berikut foto analisa saya untuk perkalian dot pada matriks Selanjutnya, saya akan membahas tentang statement kondisi yang ada pada nested loop. pada code block ke 6, saya menugaskan variabel res3 untuk melakukan perkalian matriks. nantinya hasil dari res3 akan di append ke array arr3. hmm, ga asing bukan? ya ini adalah teknik yang sama yang saya gunakan pada pertambahan matriks sebelumnya.
Pada code block kali ini, saya mencoba untuk membuat arr3 menjadi array 2 dimensi dengan menggunakan metode yang sama pada pembahasan sebelumnya. Bedanya, saya mengganti value pada range j di variabel finalArr1 menjadi 4, dan mengganti value range dari variabel iterasi i di statement loop menjadi rows2 yang bernilai 4.
Disini saya menyiapkan 2 variabel, yaitu count yang bernilai 0, dan finalArr2 yang merupakan array kosong. Lalu, saya mencoba menggunakan while-loop untuk perulangan kali ini, iseng aja sih wkwk. Pada while-loop ini saya menetapkan kondisi bahwa perulangan akan terus terjadi, jika value count tidak sama dengan value rows2, yaitu 4. Seperti teknik counter lainnya, saya akan melakukan increment pada counter.
Selanjutnya, di dalam while loop, saya mendeklarasikan sum = 0, dan melakukan perulangan for setelahnya. wahh banyak banget ni saya liat liat perulangan nya hahaha. pada perulangan ini saya berniat mengiterasi dan menjumlahkan hasil perkalian pada finalArr1, lalu saya akan meng-append hasilnya ke finalArr2.
Akhirnya kita berada di code block terakhir ya. oke jadi disini saya menggunakan teknik yang sama untuk mengubah array dimensi 1 menjadi array dimensi 2.
Hasil akhir ini akan termuat pada variabel finalArr3 = [[5, 13], [11, 31]].
3 . Transpose Matriks
Pada sesi terakhir, kita akan menganalisa bagaimana cara melakukan transpose matriks pada python. Pertama-taam seperti biasa, saya mendeklarasikan variabel rows dan cols, dengan value yang sama yitu 2. Selanjutnya saya mendeklarasikan arr2 yang berisi [[0,0],[0,0]] untuk memberi sketsa pada nilai akhir.
Next, code block perulangan saya menggunakan nested for-loop seperti sebelumnya. nested loop ini berisi penugasan kepada arr2[i][j] untuk mengembalikan nilai arr1[j][i]. Hal ini layaknya kita mengganti rows menjadi kolom ataupun sebaliknya.
Hasil akhir pada arr2 = [[1,3],[2,4]]
Itulah recap dan analisa program yang melakukan operasi pada matriks menggunakan Numpy ataupun tidak. Kamu boleh milih nih, mau menggunakan library numpy ataupun manual seperti saya (numpy aja udah, gausa manual manual hehehe).
Mungkin sekian, janlup Share okeyy?
Komentar
Posting Komentar