Setiap pekerjaan NumPy dimulai dari langkah yang sama: mengubah data yang kita miliki — hasil hitung kasir, catatan stok gudang, pengukuran suhu — menjadi array. Fungsi paling dasar untuk langkah ini adalah np.array(). Meskipun bab-bab lain memperkenalkan pembuat array yang lebih khusus, np.array() tetap menjadi pintu masuk utama karena paling mirip dengan cara Python menyimpan data sehari-hari.
Bab ini berfokus pada tiga keterampilan dasar:
- Membuat array dari list dan nested list dengan
np.array(). - Menentukan
dtypesecara eksplisit agar tipe data tidak ditebak oleh NumPy. - Memeriksa properti dasar array sebelum dipakai dihitung.
Membuat array dari data yang ada #
Fungsi np.array() menerima satu argumen berupa koleksi Python (umumnya list) dan mengembalikan ndarray baru yang berisi salinan data tersebut. Mari kita lihat bentuk paling mendasar:
import numpy as np
harga = np.array([15000, 20000, 12500])
print(harga)
print("dtype:", harga.dtype)Output yang Dihasilkan:
[15000 20000 12500]
dtype: int64- Baris 3 (
np.array([15000, 20000, 12500])): NumPy membaca list integer, mengalokasikan bufferint64, lalu menyalin nilainya satu per satu. - Baris 4 (
print(harga)): elemen dicetak dipisah spasi tanpa koma, tanda bahwahargaadalah ndarray. - Baris 5 (
harga.dtype): karena semua elemen berupa integer, NumPy memilihint64sebagai tipe yang paling tepat.
Bila argumennya berupa nested list (list di dalam list), hasilnya adalah array dua dimensi. NumPy membaca nested list baris demi baris:
import numpy as np
tabel = np.array([[1, 2, 3], [4, 5, 6]])
print(tabel)
print("shape :", tabel.shape)
print("ndim :", tabel.ndim)
print("size :", tabel.size)Output yang Dihasilkan:
[[1 2 3]
[4 5 6]]
shape : (2, 3)
ndim : 2
size : 6Mari kita periksa arti setiap properti yang dicetak:
- Baris 3 (
np.array([[1, 2, 3], [4, 5, 6]])): list pertama menjadi baris pertama, list kedua menjadi baris kedua. - Baris 6 (
tabel.shape): tuple(2, 3)berarti 2 baris × 3 kolom. - Baris 7 (
tabel.ndim): jumlah axis; nested list satu tingkat menghasilkan array 2 dimensi. - Baris 8 (
tabel.size): total elemen, yaitu 2 × 3 = 6.
Menentukan dtype secara eksplisit #
Secara bawaan, NumPy menebak tipe data dari isi list. Tebakan tersebut biasanya tepat, tetapi ada situasi ketika kita perlu memutuskan sendiri: ingin menghemat memori, atau ingin menjaga presisi tertentu. Untuk itu np.array() menerima parameter dtype:
import numpy as np
suhu = np.array([27.5, 28.0, 26.5], dtype=np.float32)
print(suhu)
print("dtype:", suhu.dtype)
print("nbytes:", suhu.nbytes)
suhu64 = np.array([27.5, 28.0, 26.5])
print("nbytes float64:", suhu64.nbytes)Output yang Dihasilkan:
[27.5 28. 26.5]
dtype: float32
nbytes: 12
nbytes float64: 24- Baris 3 (
dtype=np.float32): NumPy dipaksa memakai float 32-bit, sehingga tiap elemen hanya menempati 4 byte. - Baris 6 (
suhu.nbytes): 3 elemen × 4 byte = 12 byte — separuh dari versifloat64. - Baris 8-9 (tanpa
dtype): NumPy memilihfloat64(float 64-bit) sebagai tipe bawaan bilangan pecahan, sehingga kebutuhan memorinya menjadi 24 byte.
Perhatikan representasi 28.0 yang dicetak sebagai 28. — cara NumPy merampingkan tampilan angka pecahan. Nilainya tetap sama.
Ringkasan dtype yang sering dipakai #
Tabel berikut memetakan beberapa dtype bawaan yang paling sering kita temui di course ini:
| dtype | Isi yang disimpan | Ukuran per elemen | Contoh kebutuhan |
|---|---|---|---|
np.int64 | bilangan bulat | 8 byte | harga, stok, jumlah item |
np.float64 | bilangan pecahan (bawaan) | 8 byte | hasil pembagian, statistik |
np.float32 | bilangan pecahan ringkas | 4 byte | data sensor, data besar |
np.int8 | bilangan bulat -128 s.d. 127 | 1 byte | piksel, data hemat memori |