Pengenalan NumPy
NumPy membantu Python mengolah data numerik secara efisien. List Python dapat menampung tipe campuran, sedangkan array NumPy biasanya menyimpan nilai bertipe sama dalam struktur yang ringkas. Untuk operasi numerik tervectorisasi pada banyak nilai, susunan ini sering lebih cepat daripada loop Python yang setara.
Objek inti ndarray merepresentasikan wadah n-dimensi berukuran tetap yang seluruh elemennya memiliki satu tipe data. Desain ini memungkinkan operasi tervectorisasi, yaitu satu ekspresi yang menjelaskan pekerjaan pada seluruh array. Dokumentasi resmi NumPy menyediakan tutorial dan contoh lanjutan.
NumPy menyediakan beberapa keunggulan penting untuk pemrograman ilmiah:
- Loop numerik yang efisien karena dijalankan dalam kode native terkompilasi
- Vektorisasi memungkinkan operasi pada seluruh array tanpa loop eksplisit
- Penyimpanan yang ringkas untuk nilai numerik homogen
- Operasi matematika yang lengkap dan siap dipakai
Vektorisasi berarti menyatakan operasi untuk seluruh array tanpa menulis loop Python secara eksplisit bagi setiap elemen. NumPy tetap memproses elemen-elemen tersebut secara internal, tetapi loop-nya berjalan dalam kode terkompilasi yang telah dioptimalkan.
Pembuatan Array Manual
Cara paling dasar untuk membuat array NumPy adalah mengkonversi struktur data Python yang sudah ada menjadi array.
Array satu dimensi seperti barisan angka dalam satu baris. Kamu dapat membuatnya dari list Python menggunakan fungsi np.array().
Array dua dimensi seperti tabel dengan baris dan kolom. Kamu bisa membuatnya dari list bertingkat (nested list).
Array tiga dimensi dapat dibayangkan sebagai tumpukan tabel. Setiap lapisan memiliki baris dan kolom, sedangkan sumbu tambahan memilih lapisannya.
Struktur Multidimensi
| Dimensi | Shape | Struktur | Contoh | Axis |
|---|---|---|---|---|
| Satu dimensi | (4,) | Barisan angka dalam satu baris | [0, 1, 2, 3] | Axis untuk indeks elemen |
Semakin tinggi dimensi array, semakin kompleks struktur datanya, tetapi prinsip dasarnya tetap sama. Setiap axis mewakili satu dimensi pengorganisasian data.
NumPy dapat membuat array dari berbagai struktur data Python, termasuk list, tuple, dan campuran keduanya.
Fungsi Pembuat Array
NumPy menyediakan fungsi-fungsi khusus untuk membuat array dengan shape dan nilai yang dapat diprediksi.
Fungsi Nilai Konstan
Fungsi np.ones() membuat array yang seluruh elemennya bernilai . Fungsi ini berguna ketika setiap elemen memerlukan nilai awal yang sama.
Selain np.ones(), terdapat fungsi lain untuk membuat array dengan pola khusus:
Fungsi Random
Fungsi random berguna untuk membuat data simulasi atau inisialisasi dengan nilai acak.
Fungsi Matematika
Fungsi np.fromfunction memungkinkan pembuatan array berdasarkan fungsi matematika. Ini seperti memiliki formula untuk menghasilkan nilai setiap elemen berdasarkan posisinya.
Fungsi np.empty mengalokasikan array tanpa menginisialisasi nilai elemennya. Isi memori yang terlihat bersifat sembarang, sehingga setiap elemen harus diberi nilai sebelum dibaca. Gunakan fungsi ini hanya jika array akan segera diisi.
Array dari Sequence
NumPy menyediakan fungsi khusus untuk membuat array dari urutan nilai dengan pola tertentu.
Fungsi np.arange
Fungsi np.arange menyerupai range() milik Python, tetapi mengembalikan array dan menerima argumen floating-point. Untuk step noninteger, pembulatan floating-point dapat membuat nilai akhir kurang mudah diprediksi. Karena itu, np.linspace sering lebih jelas ketika jumlah titik yang diinginkan sudah diketahui.
Fungsi np.linspace
Berbeda dengan np.arange yang menggunakan step tetap, np.linspace membagi rentang menjadi sejumlah titik yang sama rata.
Perbandingan arange vs linspace
| Aspek | np.arange | np.linspace |
|---|---|---|
| Parameter utama | start, stop, step | start, stop, num |
| Kontrol | Jarak antar elemen | Jumlah total elemen |
| Endpoint |
Operasi Dasar
Setelah membuat array, kamu dapat melakukan berbagai operasi untuk memanipulasi dan menganalisis data.
Array dapat diubah bentuknya menggunakan fungsi reshape() untuk mengatur ulang dimensi tanpa mengubah data: