Definisi
Salah satu kemampuan yang sangat penting untuk dimiliki oleh Data Analyst, Data Engineer dan Data Scientist adalah kemampuan untuk memanipulasi data. Data Analyst butuh kemampuan memanipulasi data untuk menganalisis data dan mendapatkan informasi-informasi penting dari data tersebut.
Data Engineer sangat memerlukan kemampuan manipulasi data untuk membersihkan data kotor menjadi data bersih untuk kemudian digunakan oleh Data Analyst dan Data Scientist. Adapun Data Scientist juga membutuhkan kemampuan manipulasi data untuk mempersiapkan data sebelum dibuat suatu model Machine Learning. Seluruh kemampuan manipulasi data yang dilakukan di Python hanya akan dilakukan dengan benar apabila kita memahami dengan baik konsep Array pada Python.
Array adalah kumpulan elemen / nilai yang dapat memiliki satu atau lebih dimensi. Array satu dimensi disebut Vektor sementara memiliki dua dimensi disebut Matriks. NumPy Array juga disebut Array ndarray atau N-dimensional Array dan mereka menyimpan elemen dengan tipe dan ukuran yang sama. Ia dikenal karena kinerjanya yang tinggi dan menyediakan penyimpanan dan operasi data yang efisien seiring bertambahnya ukuran array.
NumPy (Numerical Python) adalah library Python yang fokus pada scientific computing. NumPy memiliki kemampuan untuk membentuk objek N-dimensional array, yang mirip dengan list pada Python. Keunggulan NumPy array dibandingkan dengan list pada Python adalah konsumsi memory yang lebih kecil serta runtime yang lebih cepat. NumPy juga memudahkan kita pada Aljabar Linear, terutama operasi pada Vector (1-d array) dan Matrix (2-d array).
List pada Python tidak mendukung penuh kemudahan scientific computing, sebagai contoh kita akan lakukan operasi penjumlahan pada 2 list.
Ketika kita ingin menjumlahkan tiap elemen pada list a dan list b, hasilnya dengan operator + adalah penggabungan (concat) keduanya. Tentu tidak sesuai yang diharapkan, maka kita harus menggunakan perulangan for untuk menambahkan tiap elemen pada list a dan list b. Proses penjumlahan list yang menggunakan perulangan for membutuhkan waktu yang lama dan tidak efisien dari sisi penulisan code.
Pengenalan NumPy Arrays
Membuat Array
Lakukan import terlebih dahulu library numpy as np. Penggunaan as disini, artinya kita menggantikan pemanggilan numpy dengan prefix np untuk proses berikutnya.
Untuk membuat sebuah array, kita menggunakan fungsi array() yang terdapat pada NumPy. Pada NumPy, terdapat upcasting, yaitu ketika tipe data element array tidak sama, dilakukan penyamaan tipe data pada yang lebih tinggi. Misalkan kita membuat array numeric dengan semua element bertipe integer, kecuali 1 element bertipe float, maka otomatis akan dilakukan upcasting menjadi tipe float pada semua element array.
Cek Tipe
Untuk melakukan pengecekan tipe pada array menggunakan fungsi type().
NumPy array merupakan sebuah objek ndarray, yang merupakan singkatan dari n-dimensional array.
Tipe Data untuk Element
Pengecekan tipe data element pada array menggunakan fungsi dtype.
Dalam membuat sebuah array, kita dapat menetapkan tipe data dengan menambahkan parameter dtype.
Array a memiliki tipe data int32 dan int64 yang keduanya sama-sama bertipekan integer.Perbedaan keduanya pada kapasitas penyimpanan data. Pada int32 mampu menampung hingga (-2,147,483,648 to +2,147,483,647)
sedangkan int64 mampu menampung hingga (-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807).
Penting bagi kita memperhatikan tipe data beserta kapasitas penyimpanannya agar dapat mengalokasikan memory penyimpanan dengan baik. Beberapa tipe data standar yang terdapat pada NumPy adalah sebagai berikut:
Jumlah Dimensi
NumPy array memiliki keunggulan mendukung operasi pada data dimensional seperti Vektor dan Matriks. Untuk mengetahui jumlah dimensi pada data menggunakan fungsi ndim.
Array a memiliki jumlah dimensi 1. Jika kita membentuk array dengan 2-dimensi, maka jumlah dimensinya adalah 2, begitu juga dengan dimensi yang lebih besar.
Array Shape
Pada fungsi shape menghasilkan sebuah tuple yang berisikan panjang sebuah array pada tiap dimensi.
Array a memiliki shape 3, yaitu panjang array pada 1-dimensi array.
Operasi pada Array
NumPy memudahkan kita untuk operasi elementwise pada Vektor dan Matriks seperti penjumlahan, perkalian, pangkat, dan operasi lainnya.
Pada NumPy telah disediakan universal functions (ufunc) yaitu fungsi yang dapat melakukan operasi pada NumPy array dengan eksekusi elemen-demi-elemen. ufunc merupakan sebuah ‘vectorized’ wrapper untuk sebuah fungsi yang memiliki input dan output yang sepesifik. Contoh dari ufunc misalkan fungsi sin dan cos.
Element pada Array
Array Indexing
Indeks pada suatu array dimulai pada indeks ke-0. Untuk mengakses element pada array, kita menggunakan indeks sebagai alamat elemen pada array.
Kita dapat melakukan assign nilai baru pada suatu element berdasarkan alamat indeks. Maka, setelah dilakukan assign nilai element pada indeks ke-0 berganti menjadi 10.
Perlu kita perhatikan jika dtype pada array adalah integer, misalkan int32. Kemudian kita assign nilai baru pada salah satu elemen dengan tipe data float. Maka, nilai baru tersebut akan dipaksa menjadi tipe int32 sesuai dengan tipe data pada array.
Multi-Dimensional Arrays
NumPy array memudahkan kita untuk membuat array multi-dimensi.
Fungsi shape pada array multi-dimensi menghasilkan tuple berisikan (jumlah baris, jumlah kolom).
Untuk mengetahui jumlah elemen pada array multi-dimensi menggunakan fungsi size.
Untuk mengetahui jumlah dimensi dari array multi-dimensi menggunakan fungsi ndim. Jumlah dimensi pada array a adalah 2, karena merupakan array 2-dimensi.
Pada array multi-dimensi kita dapat mengakses nilai elemen berdasarkan indeks dengan pemisah tanda koma [,]. Misalkan kita ingin mendapatkan data pada baris ke-1 dan kolom ke-3 dari array a, maka dilakukan perintah a[1, 3].
Misalkan, kita akan mengganti data pada baris ke-1 dan kolom ke-3 pada array a dengan nilai -1, kita dapat langsung assign nilai baru tersebut pada indeks.
Slicing
Selain kita dapat mengambil sebuah element array dengan cara indexing seperti cara di atas, kita dapat melakukan slicing, yaitu melakukan ekstraksi elemen atau beberapa elemen pada array, dengan menggunakan tanda [:].
var[lower:upper:step]
Perlu kita perhatikan, elemen pada lower akan dimasukkan hasil slicing, sedangkan element pada upper TIDAK dimasukkan hasil slicing, dan step adalah jarak antar elemen.
Kita dapat mendefinisikan indeks dengan nilai negatif. Misalkan indeksnya adalah [-1], maka indeks terdapat pada elemen ke-1 yang dari lokasi akhir elemen suatu array.