Atribut size menjawab pertanyaan “ada berapa nilai di dalam array ini?” dengan satu bilangan: jumlah seluruh elemen, tanpa memandang jumlah dimensinya. Size menjadi acuan cepat untuk memvalidasi data, misalnya memastikan 24 nilai harian benar-benar utuh, serta menjadi syarat wajib yang kita periksa sebelum menulis ulang shape array.

Kita kembali memakai data penjualan jaringan toko sebagai contoh berjalan. Di akhir bab, kita juga akan melihat mengapa size dan fungsi len() bisa menghasilkan angka yang berbeda pada array multi-dimensi.

size sebagai jumlah seluruh elemen #

size menghitung setiap sel array. Rumusnya sederhana: size sama dengan hasil kali panjang semua axis, dan kita bisa menghitungnya dengan np.prod(a.shape). Mari kita verifikasi rumus itu pada array penjualan harian.

python
import numpy as np

penjualan_harian = np.array([
    [85, 90, 78, 102],
    [64, 71, 69, 80],
    [110, 98, 105, 123],
])

print(penjualan_harian.size)
print(penjualan_harian.shape)
print(np.prod(penjualan_harian.shape) == penjualan_harian.size)

Output yang Dihasilkan:

text
12
(3, 4)
True

Mari kita bedah kode di atas baris demi baris:

  1. Baris 3-7: array 2-D berbentuk (3, 4) dibuat dari list bersarang dua tingkat.
  2. Baris 9 (print(...size)): atribut size menghitung 3 × 4 = 12, sehingga tercetak 12.
  3. Baris 10: tuple shape tercetak (3, 4) sebagai pembanding.
  4. Baris 11: np.prod() mengalikan seluruh elemen tuple (3 × 4 = 12) lalu membandingkannya dengan size; hasilnya True.

Tabel berikut merangkum perhitungan size pada array-array contoh kita:

shapePerhitungan manualsize
(6,)66
(3, 4)3 × 412
(2, 3, 4)2 × 3 × 424

Bentuk berubah, size tetap #

Syarat penugasan a.shape = (...) yang kita pelajari pada Chapter Atribut shape sesungguhnya adalah syarat tentang size: total elemen harus tetap. Setelah bentuk berubah, size array tidak bergeser karena NumPy hanya menata ulang elemen yang sama, bukan menambah atau mengurangi datanya.

python
import numpy as np

penjualan_cabang = np.array([120, 95, 143, 88, 210, 176])
print(penjualan_cabang.size)

penjualan_cabang.shape = (2, 3)
print(penjualan_cabang.shape, penjualan_cabang.size)

penjualan_wilayah = np.array([
    [[85, 90, 78, 102], [64, 71, 69, 80], [110, 98, 105, 123]],
    [[70, 75, 82, 88], [58, 62, 60, 71], [95, 99, 91, 104]],
])
print(penjualan_wilayah.size)

Output yang Dihasilkan:

text
6
(2, 3) 6
24

Perilaku penting pada kode di atas:

  1. Baris 3-4: array 1-D berisi enam nilai tercetak size-nya 6.
  2. Baris 6-7: penugasan shape (2, 3) mengubah array menjadi matriks; shape kini (2, 3), tetapi size tetap 6.
  3. Baris 9-13: array 3-D berbentuk (2, 3, 4) menyimpan 2 × 3 × 4 = 24 nilai, sehingga size-nya 24.

Ketika len() dan size berbeda #

Pada array 1-D, len(array) dan size menghasilkan angka yang sama. Pada array multi-dimensi keduanya berbeda: len() menghitung panjang axis pertama, sedangkan size menghitung semua sel. Perbedaan ini sering luput saat kita berpindah dari array 1-D ke 2-D.

python
import numpy as np

penjualan_harian = np.array([
    [85, 90, 78, 102],
    [64, 71, 69, 80],
    [110, 98, 105, 123],
])

print(len(penjualan_harian), penjualan_harian.size)

Output yang Dihasilkan:

text
3 12

Fungsi len() menghasilkan 3 karena hanya membaca axis pertama, yaitu jumlah baris, padahal array menyimpan 12 nilai.