Kategori
Pemrograman

Numpy

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.

Image for post

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.

Image for post

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.

Image for post

Cek Tipe

Untuk melakukan pengecekan tipe pada array menggunakan fungsi type().

Image for post

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.

Image for post

Dalam membuat sebuah array, kita dapat menetapkan tipe data dengan menambahkan parameter dtype.

Image for post

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:

Image for post

Jumlah Dimensi

NumPy array memiliki keunggulan mendukung operasi pada data dimensional seperti Vektor dan Matriks. Untuk mengetahui jumlah dimensi pada data menggunakan fungsi ndim.

Image for post

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.

Image for post

Array 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.

Image for post

Pada NumPy telah disediakan universal functions (ufuncyaitu 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.

Image for post

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.

Image for post

Multi-Dimensional Arrays

NumPy array memudahkan kita untuk membuat array multi-dimensi.

Image for post
Image for post

Fungsi shape pada array multi-dimensi menghasilkan tuple berisikan (jumlah baris, jumlah kolom).

Image for post
Image for post

Untuk mengetahui jumlah elemen pada array multi-dimensi menggunakan fungsi size.

Image for post
Image for post

Untuk mengetahui jumlah dimensi dari array multi-dimensi menggunakan fungsi ndim. Jumlah dimensi pada array adalah 2, karena merupakan array 2-dimensi.

Image for post
Image for post

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

Image for post

Misalkan, kita akan mengganti data pada baris ke-1 dan kolom ke-3 pada array dengan nilai -1, kita dapat langsung assign nilai baru tersebut pada indeks.

Image for post
Image for post

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.

Image for post

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.

Ref : [1][2][3][4]