Memahami Pengindeksan pada NumPy

Artikel singkat ini bertujuan untuk memberi pemahaman tentang pengindeksan NumPy. Selain operasi matriks/array, (pemahaman) pengindeksan ini sangat penting untuk dapat memanipulasi atau mengoperasikan array. Beruntungnya, sebuah makalah ulasan baru di Nature [1] yang ditulis oleh kontributor NumPy menyinggung pengindeksan NumPy ini secarang singkat dan padat. Tulisan ini merupakan interpretasi bebas atas makalah tersebut dengan pendekatan IPython yang telah dikenalkan pada tulisan seri sebelumnya.

Memahami Bentuk (shape) NumPy Array

Pada tulisan sebelumnya telah dijelaskan cara mengubah bentuk (shape) dari sebuah NumPy array. Untuk mengubah bentuk array, kita harus bisa mengenali bentuk dari array itu sendiri. Gambar di bawah ini mengilustrasikan bentuk array 1D, 2D, 3D, dan ND.

Bentuk-bentuk (shape) array: 1D, 2D, dan 3D [2]

Bentuk-bentuk matriks/array di atas dapat dibagi sebagai berikut:

  • 0D array, contohnya skalar a = np.array(2).
  • 1D array, contohnya vektor dengan bentuk (2, ), (3, ), (4,).
  • 2D array, contohnya matriks berbentuk (3, 1), (2, 3), (3, 3).
  • 3D array, contohnya matriks berbentuk (3, 1, 1), (3, 2, 3), (4,3,2).
  • ND array, contohnya matrik berukuran (n, 4, 3, 2), (n, n, 4, 3, 2).

Untuk mengetahui bentuk array, perintah yang digunakan adalah x.shape dengan x adalah NumPy array. Untuk mengetahui dimensi array, perintah yang digunakan adalah x.ndim. Untuk mengetahui tipe data, perintah yang digunakan adalah x.dtype. Perhatikan screencast di bawah ini untuk menyegarkan kembali ingatan kita tentang NumPy array.


Screencast di atas jika diringkas, dapat diilustrasikan seperti gambar di bawah ini.

Konsep pengindeksan pada NumPy array. Gambar diadaptasi dari [1] dengan modifikasi. (http://creativecommons.org/licenses/by/4.0/)

Pengindeksan pada NumPy dapat dibagi menjadi dua, yakni pengindeksan yang hanya "melihat" data asli ("view") dan pengindeksan yang menyalin data asli ("copy"). Pengindeksan "view" adalah jika pengindeksan tersebut hanya untuk melihat irisan atau irisan dengan langkah tertentu dari data asli. Misalnya, semua baris diindeks; semuua kolom diindeks tapi dengan besar langkah 2, yakni (hasilnya) kolom 0 dan kolom 2. Pengindeksan dengan menyalin data asli berlaku pada pengindeksan dengan mask, koordinat skalar (posisi data yang ingin diindeks), atau pengindeksan dengan matrik lain. Contoh pengindeksan ini ada di gambar di atas pada poin C.

Dua perintah atau fungsi yang belum dibahas pada screencast dan gambar di atas adalah strides. strides menghasilkan keluaran tuple (penjelasan sementara: ditandai dengan tanda kurung()), nilai pertama menunjukkan bytes yang dibutuhkan untuk berpindah baris, sedangkan nilai kedua adalah banyaknya bytes dalam satu elemen. Dari definisi tersebut terlihat bahwa stride berhubungan dengan tipe data yang digunakan. Terlihat dalam screencast ketika kita mengubah tipe data dari 'int64' menjadi 'int16' maka stride-nya juga berubah, yakni dari (24, 8) menjadi (6, 2). Pada tipe data terakhir hanya butuh 6 bytes untuk berpindah satu baris.

Demikian penjelasan singkat untuk memahami pengindeksan pada array NumPy. Silahkan baca referensi di bawah ini untuk penjelasan tambahan.

Bersambung ke seri selanjutnya.

Referensi

[1] C. R. Harris et al., “Array Programming with NumPy,” Nature, vol. 585, no. September, pp. 357–362, 2020.
[2] https://bagustris.blogspot.com/2019/09/memahami-sizeshape-numpy-array.html [Memahami size dan shape NumPy array]

Avatar

Bagus Tris Atmaja

Menyelesaikan Sarjana di Teknik Fisika, ITS (2009) dan master (2012)  yang mengabdikan hidupnya pada almamater yang sama, VibrasticLab TF-ITS. Saat ini sedang menempuh pendidikan Doktor di JAIST, Jepang

You may also like...

Leave a Reply

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

CAPTCHA Image

*