Elemen terakhir adalah data yang paling sering dicari: nilai ujian terbaru, transaksi terakhir, atau penjualan hari ini. Dengan indeks positif kita harus menghitung len(nilai) - 1 terlebih dahulu — dan hitungan itu berubah setiap kali panjang array berubah. NumPy menyediakan negative indexing: indeks negatif yang menghitung posisi dari belakang, sehingga elemen terakhir selalu berada di -1 tanpa perlu tahu panjang array.

Indeks Negatif Menghitung dari Belakang #

Aturannya sederhana: -1 menunjuk elemen terakhir, -2 elemen sebelumnya, dan seterusnya sampai -N yang menunjuk elemen pertama. Kita uji pada array nilai ujian:

python
import numpy as np

nilai = np.array([78, 85, 92, 69, 88, 95, 73, 81])
print(nilai[-1])
print(nilai[-2])
print(nilai[len(nilai) - 1])
print(nilai[-8])

Output yang Dihasilkan:

text
81
73
81
78

Bedah baris demi baris:

  1. Baris 3 (nilai[-1]): NumPy menerjemahkan indeks -1 menjadi elemen terakhir, 81, tanpa perlu memanggil len() terlebih dahulu.
  2. Baris 4 (nilai[-2]): satu langkah dari belakang → 73.
  3. Baris 5 (nilai[len(nilai) - 1]): cara manual dengan indeks positif; hasilnya juga 81 — bandingkan sendiri ringkasnya dengan baris 3.
  4. Baris 6 (nilai[-8]): indeks negatif terjauh yang valid untuk array delapan elemen, menunjuk elemen pertama, 78.

Tabel berikut memetakan indeks negatif ke indeks positif ekuivalennya:

Indeks negatifEkuivalen indeks positifNilai
-1781
-2673
-3595
-8078

Rumus konversinya: indeks positif = panjang array + indeks negatif. Untuk array N elemen, indeks negatif yang valid berada pada rentang -N sampai -1; di luar rentang itu NumPy memunculkan IndexError yang sama seperti dibahas pada Chapter Indexing Array Satu Dimensi.

Langkah Negatif dan Pembalikan Urutan #

Parameter step pada slicing (Chapter Slicing Array) juga menerima angka negatif. Langkah negatif membuat slice berjalan dari kanan ke kiri:

python
import numpy as np

nilai = np.array([78, 85, 92, 69, 88, 95, 73, 81])
print(nilai[::-1])
print(nilai[::-2])
print(nilai[-3:])

Output yang Dihasilkan:

text
[81 73 95 88 69 92 85 78]
[81 95 69 85]
[95 73 81]

Bedah baris demi baris:

  1. nilai[::-1]: start dan stop dikosongkan sementara step bernilai -1, sehingga seluruh elemen dibaca dari belakang ke depan. Ekspresi ini adalah idiom standar untuk membalik urutan array di NumPy.
  2. nilai[::-2]: langkah dua dari belakang → indeks 7, 5, 3, 1 → [81 95 69 85].
  3. nilai[-3:]: start negatif dengan stop kosong mengambil tiga elemen terakhir tanpa membalik urutan → [95 73 81].

Indeks Negatif pada Array Dua Dimensi #

Pada array multidimensi, setiap axis boleh memakai indeks negatif secara mandiri:

python
import numpy as np

penjualan = np.array([
    [12, 15, 9, 20],
    [8, 14, 11, 17],
    [19, 6, 13, 10],
])
print(penjualan[-1])
print(penjualan[-1, -2])
print(penjualan[-3, -4])
print(penjualan[-2:, -2:])

Output yang Dihasilkan:

text
[19  6 13 10]
13
12
[[11 17]
 [13 10]]

Bedah baris demi baris:

  1. penjualan[-1]: satu indeks negatif pada array dua dimensi menghasilkan baris terakhir utuh, [19 6 13 10].
  2. penjualan[-1, -2]: baris terakhir, kolom kedua dari belakang → 13.
  3. penjualan[-3, -4]: pada matriks 3 x 4, -3 sama dengan baris pertama dan -4 sama dengan kolom pertama, sehingga hasilnya 12 — ekuivalen dengan penjualan[0, 0].
  4. penjualan[-2:, -2:]: indeks negatif dipadukan dengan slicing → dua baris terakhir dan dua kolom terakhir, submatriks 2 x 2 di sudut kanan bawah.

Ringkasan bab ini:

  • -1 selalu menunjuk elemen terakhir dan -N menunjuk elemen pertama; rentang valid -N sampai -1.
  • Konversi ke indeks positif: indeks positif = panjang array + indeks negatif.
  • step negatif seperti a[::-1] membalik urutan, dan trik ini bekerja per axis pada array multidimensi.