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.
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:
12
(3, 4)
TrueMari kita bedah kode di atas baris demi baris:
- Baris 3-7: array 2-D berbentuk
(3, 4)dibuat dari list bersarang dua tingkat. - Baris 9 (
print(...size)): atribut size menghitung 3 × 4 = 12, sehingga tercetak12. - Baris 10: tuple shape tercetak
(3, 4)sebagai pembanding. - Baris 11:
np.prod()mengalikan seluruh elemen tuple (3 × 4 = 12) lalu membandingkannya dengan size; hasilnyaTrue.
Tabel berikut merangkum perhitungan size pada array-array contoh kita:
| shape | Perhitungan manual | size |
|---|---|---|
(6,) | 6 | 6 |
(3, 4) | 3 × 4 | 12 |
(2, 3, 4) | 2 × 3 × 4 | 24 |
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.
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:
6
(2, 3) 6
24Perilaku penting pada kode di atas:
- Baris 3-4: array 1-D berisi enam nilai tercetak size-nya
6. - Baris 6-7: penugasan shape
(2, 3)mengubah array menjadi matriks; shape kini(2, 3), tetapi size tetap6. - Baris 9-13: array 3-D berbentuk
(2, 3, 4)menyimpan 2 × 3 × 4 = 24 nilai, sehingga size-nya24.
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.
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:
3 12Fungsi len() menghasilkan 3 karena hanya membaca axis pertama, yaitu jumlah baris, padahal array menyimpan 12 nilai.