DataLens

Membuat array (array, arange, zeros, ones, linspace)

Bangun array dari list, rentang angka, titik-titik berjarak sama dan grid yang terisi, titik awal setiap program NumPy.

Level: Dasar · 7 menit baca

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Idenya

Sebelum bisa menghitung, kamu butuh array. Kadang angkanya datang dari data (list, file, kolom pandas). Sering kali kamu perlu membangkitkannya: hari-hari dalam sebulan, 100 titik berjarak sama untuk grafik, grid berisi nol untuk diisi nanti. NumPy punya fungsi untuk masing-masing.

Dari list: np.array

Kalau angkanya sudah ada, seperti jumlah order harian selama seminggu, berikan ke np.array dalam bentuk list:

import numpy as np

daily_orders = np.array([42, 38, 51, 47, 60, 75, 68])
print(daily_orders)
[42 38 51 47 60 75 68]

List berisi list menjadi array 2-D, grid dengan baris dan kolom. Setiap list di dalamnya adalah satu baris, dan semua baris harus punya panjang yang sama:

# unit terjual: baris = toko, kolom = bulan (Jan sampai Jun)
units = np.array([
    [120, 135, 150, 160, 155, 170],   # Jakarta
    [ 80,  85,  90,  88,  95, 100],   # Bandung
    [ 95,  92, 105, 110, 108, 115],   # Surabaya
])
print(units)
[[120 135 150 160 155 170]
 [ 80  85  90  88  95 100]
 [ 95  92 105 110 108 115]]

Itulah bentuk sebagian besar data yang akan kamu tangani: tabel angka. Array 2-D persis seperti yang ada di balik DataFrame pandas yang berisi angka.

Rentang: np.arange

Sering kali kamu butuh deret angka, bukan data yang sudah ada: nomor hari 1 sampai 31, ID order, atau setiap nilai kelipatan sepuluh untuk sumbu grafik. np.arange adalah versi NumPy dari range, tapi memberimu array:

print(np.arange(5))            # 0 sampai 4
print(np.arange(1, 8))         # 1 sampai 7
print(np.arange(0, 50, 10))    # langkah 10
[0 1 2 3 4]
[1 2 3 4 5 6 7]
[ 0 10 20 30 40]

Seperti range, nilai stop tidak ikut: np.arange(1, 8) berakhir di 7. Berbeda dengan range, ia juga menerima desimal:

print(np.arange(0, 1, 0.25))
[0.   0.25 0.5  0.75]
Awas

Dengan langkah desimal, pembulatan bisa membuat arange mengikutsertakan atau melewatkan nilai terakhir secara tak terduga (0.1 tidak bisa disimpan persis dalam biner). Saat kamu ingin "N titik antara A dan B", pakai linspace saja.

Titik-titik berjarak sama: np.linspace

np.linspace(start, stop, num) memberi num titik dari start sampai stop, termasuk kedua ujungnya:

print(np.linspace(0, 1, 5))
print(np.linspace(100, 200, 3))
[0.   0.25 0.5  0.75 1.  ]
[100. 150. 200.]

Kamu memilih berapa banyak titiknya, dan NumPy menghitung jaraknya. Itulah yang kamu inginkan untuk grafik ("gambar kurva ini dengan 100 titik") dan untuk skenario ("coba 5 tingkat diskon dari 0% sampai 40%"):

discounts = np.linspace(0, 0.4, 5)
price = 320
print(discounts)
print(price * (1 - discounts))
[0.  0.1 0.2 0.3 0.4]
[320. 288. 256. 224. 192.]

Array yang terisi: zeros, ones, full

Untuk membuat array dengan shape tertentu yang diisi satu nilai:

print(np.zeros(4))
print(np.ones((2, 3)))
print(np.full((2, 4), 7))
[0. 0. 0. 0.]
[[1. 1. 1.]
 [1. 1. 1.]]
[[7 7 7 7]
 [7 7 7 7]]

Kenapa membuat grid berisi nol? Untuk diisi nanti, misalnya tabel toko × minggu yang kamu lengkapi saat data datang. Kamu akan belajar meng-assign ke dalam array di modul indexing.

Masing-masing punya versi _like yang menyalin shape dari array yang sudah ada:

targets = np.full_like(units, 100)
print(targets)
[[100 100 100 100 100 100]
 [100 100 100 100 100 100]
 [100 100 100 100 100 100]]

Memilih tipe: dtype

Setiap fungsi pembuat array menerima dtype= untuk memilih tipe elemennya:

print(np.zeros(3, dtype=int))
print(np.array([1, 2, 3], dtype=float))
print(np.arange(3, dtype=np.float32))
[0 0 0]
[1. 2. 3.]
[0. 1. 2.]

Modul berikutnya menjelaskan dtype secara detail.

Mengapa ini penting untuk kode yang bersih

Membangkitkan angka dengan fungsi yang tepat menyatakan maksudmu: np.linspace(0, 0.4, 5) jelas berarti "5 diskon berjarak sama", sedangkan [0, 0.1, 0.2, 0.3, 0.4] yang diketik manual mengundang typo dan harus diketik ulang saat kamu ingin 9 tingkat. Utamakan fungsi yang menghitung input-mu dibanding nilai yang diketik manual.

Rangkuman

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Berikutnya: Attribute array (shape, dtype, ndim) →