Mengubah Bentuk Matriks pada NumPy

Artikel ini adalah kelanjutan dari tulisan sebelumnya: belajar Python NumPy dengan IPython. Kali ini kita akan belajar konsep pengubahan bentuk matriks pada NumPy array.

Pada bahasa pemrograman berbasis matriks (seperti Matlab, Octave, Julia, Scilab, dan Python NumPy), hampir semua kesalahan (eror) yang ditemui oleh pemula adalah ketidaksesuaian ukuran matriks. Ya, pastinya untuk bisa mengoperasikan dua buah matriks atau lebih, ukuran matriks-matriks tersebut harus berkesesuaian. Tulisan ini mengenalkan cara-cara mengubah bentuk matriks pada NumPy array.

Hal mendasar pada pengubahan bentuk matriks pada NumPy adalah operasi tersebut hanya memengaruhi struktur larik (array), bukan datanya. Operasi tersebut umumnya dapat dilakukan tanpa menyalin memori. Artinya, operasi tersebut menghemat memori. Dari empat teknik yang akan dijelaskan untuk mengubah bentuk matriks, tiga teknik memproses array tanpa menyalin memori (transpose, reshape, flatten), sedang teknik terakhir, ravel, memproses array dengan menyalin memori.

Transpose

Operasi dasar 'membalik' matriks dinamakan transpose. Pada NumPy, operasi ini bisa dilakukan dengan tiga cara: .T, .transpose(), dan np.transpose(). Ketiganya sama, hanya berbeda namanya saja: .T adalah atribut, .transpose() merupakan metode, dan np.transpose() merupakan fungsi. Baik .T dan .tranpose() tidak menerima argumen (input), hanya np.transpose() yang bisa menerima argumen. Simak video screencast di bawah ini untuk prakteknya.

# Perintah dasar:
a.T
a.transpose()
np.transpose(a)

Untuk matriks 3D tidak dibahas dulu, namun jika anda ingin mempelajarinya, silahkan lihat screencastnya di sini.

Reshape

Teknik kedua untuk mengubah bentuk matriks adalah dengan reshape. Seperti halnya transpose, reshape bisa berupa perintah/fungsi (np.reshape()) atau metode (.reshape()). Sesuai namanya, fungsi/metode ini digunakan untuk mengubah bentuk matriks, misal dari ukuran (m, n) menjadi (n, m). Perlu diperhatikan bahwa perintah reshape tidak sama dengan transpose. Pada kasus reshape matrik A (m, n) menjadi B (n, m) hanya ukurannya yang dibalik, bukan matriksnya. Perhatikan screencast di bawah ini.

# Perintah dasar:
a.reshape(baris, kolom)
np.reshape(a, (baris, kolom)


Reshape(-1,1) dan Reshape(1, -1)

Perintah reshape memiliki fitur yang unik, yakni reshape(-1, 1) untuk membentuk vektor kolom dan (1,-1) untuk membentuk vektor baris. Kedua fitur ini banyak dipakai dan mudah dipahami. Argumen -1 menunjukkan bentuk (shape)  yang tidak diketahui. Misal matriks a berukuran (3, 2), maka reshape(-1, 1) menghasilkan matriks berukuran (6, 1) sedangkan reshape (1, -1) menghasilkan matriks berukuran (1, 6). Simak demonya sebagai berikut.

# perintah dasar:
a.reshape(-1, 1)      # membentuk matriks kolom
a.reshape(1, -1)      # membentuk matriks baris

Flatten dan Ravel

Baik perintah flatten dan ravel menghasilkan luaran yang sama: matrik 1D (alias vektor). Bedanya, flatten menyalin matriks asli sedangkan ravel tidak (jika memungkinkan). Sehingga, memodifikasi matriks hasil flatten tidak mengubah matriks asli sedangan memodifikasi matrik hasil flatten mengubah matriks asli. Perhatikan screencast berikut.

# perintah dasar:
a.flatten()
a.ravel()

Penutup

Tulisan ini menjelaskan cara-cara mengubah bentuk matriks pada NumPy array. Ada beberapa teknik yang digunakan: transpose, reshape, flatten, dan ravel. Setiap perintah tersebut memiliki karakteristik yang berbeda-beda. Memahami setiap kegunaan perintah tersebut akan memudahkan operasi matriks, yang mana bentuk atau ukuran matriks sangat penting dalam operasi tersebut.

Avatar

Bagus Tris Atmaja

Menyelesaikan sarjana (2009) dan magister (2012) di Teknik Fisika ITS. Gelar PhD diperoleh di bidang "Information Science" dari Japan Advanced Institute of Science and Technology (JAIST). Saat ini bekerja sebagai peneliti di Artificial Intelligence Research Center, AIST Tsukuba.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA Image

*