Skip to main content

Comparison Operators

Pada materi sebelumnya kita telah mempelajari dot product dan bagaimana NumPy dapat digunakan untuk melakukan perhitungan terhadap array dan matriks.

Sekarang kita akan mempelajari comparison operators atau operator pembandingan pada NumPy.

Comparison operators digunakan untuk membandingkan nilai dalam array berdasarkan suatu kondisi.

Contohnya:

Apakah nilai lebih besar dari 5?
Apakah nilai lebih kecil dari 10?
Apakah nilai sama dengan 20?
Apakah nilai tidak sama dengan 15?

NumPy memungkinkan operator pembandingan Python digunakan langsung pada array.

Hasilnya bukan satu nilai True atau False, tetapi array Boolean yang berisi hasil pembandingan untuk setiap elemen.


Apa Itu Comparison Operators?

Comparison operators adalah operator yang digunakan untuk membandingkan dua nilai.

Python menyediakan beberapa operator pembandingan:

OperatorArti
>Lebih besar dari
<Lebih kecil dari
>=Lebih besar atau sama dengan
<=Lebih kecil atau sama dengan
==Sama dengan
!=Tidak sama dengan

Operator tersebut juga dapat digunakan pada NumPy array.


Element-Wise Comparison

Ketika melakukan pembandingan pada NumPy array, pembandingan dilakukan secara element-wise.

Artinya, setiap elemen dibandingkan dengan elemen lain yang berada pada posisi yang sama.

Contohnya:

import numpy as np

a1 = np.array([1, 2, 3])
a2 = np.array([1, 2, 3.3])

Kita dapat membandingkan:

a1 > a2

Hasil:

[False False False]

NumPy melakukan:

1 > 1 → False
2 > 2 → False
3 > 3.3 → False

Operator Lebih Besar

Operator > digunakan untuk memeriksa apakah suatu nilai lebih besar dari nilai lainnya.

Contoh:

a1 = np.array([1, 2, 3])
a2 = np.array([1, 2, 3.3])

result = a1 > a2

print(result)

Output:

[False False False]

Karena:

1 > 1 → False
2 > 2 → False
3 > 3.3 → False

Operator Lebih Kecil

Operator < digunakan untuk memeriksa apakah suatu nilai lebih kecil dari nilai lainnya.

result = a1 < a2

print(result)

Output:

[False False True]

Karena:

1 < 1 → False
2 < 2 → False
3 < 3.3 → True

Operator Lebih Besar atau Sama Dengan

Operator >= digunakan untuk memeriksa apakah nilai lebih besar atau sama dengan nilai lainnya.

result = a1 >= a2

print(result)

Output:

[ True True False]

Penjelasannya:

1 >= 1 → True
2 >= 2 → True
3 >= 3.3 → False

Operator Lebih Kecil atau Sama Dengan

Operator <= digunakan untuk memeriksa apakah nilai lebih kecil atau sama dengan nilai lainnya.

result = a1 <= a2

print(result)

Output:

[ True True True]

Karena:

1 <= 1 → True
2 <= 2 → True
3 <= 3.3 → True

Operator Sama Dengan

Operator == digunakan untuk memeriksa apakah nilai pada kedua array sama.

result = a1 == a2

print(result)

Output:

[ True True False]

Penjelasannya:

1 == 1 → True
2 == 2 → True
3 == 3.3 → False

Perlu diperhatikan bahwa:

a1 == a2

menghasilkan Boolean untuk setiap elemen, bukan satu Boolean untuk seluruh array.


Operator Tidak Sama Dengan

Operator != digunakan untuk memeriksa apakah dua nilai berbeda.

result = a1 != a2

print(result)

Output:

[False False True]

Karena:

1 != 1 → False
2 != 2 → False
3 != 3.3 → True

Tipe Data Hasil Comparison

Hasil comparison pada NumPy merupakan sebuah ndarray.

Contohnya:

bool_array = a1 >= a2

Kita dapat memeriksa tipenya:

print(type(bool_array))

Output:

<class 'numpy.ndarray'>

Periksa tipe data elemennya:

print(bool_array.dtype)

Output:

bool

Jadi:

Hasil comparison

NumPy ndarray

dtype = bool

True / False

Membandingkan Array dengan Skalar

NumPy juga memungkinkan kita membandingkan seluruh elemen array dengan satu nilai.

Nilai tunggal tersebut disebut scalar.

Contohnya:

a1 = np.array([1, 2, 3])

print(a1 > 5)

Output:

[False False False]

NumPy membandingkan setiap elemen dengan angka 5:

1 > 5 → False
2 > 5 → False
3 > 5 → False

Contoh Operator < dengan Skalar

print(a1 < 5)

Output:

[ True True True]

Karena:

1 < 5 → True
2 < 5 → True
3 < 5 → True

Operator >= dengan Skalar

print(a1 >= 2)

Output:

[False True True]

Penjelasan:

1 >= 2 → False
2 >= 2 → True
3 >= 2 → True

Operator <= dengan Skalar

print(a1 <= 2)

Output:

[ True True False]

Penjelasan:

1 <= 2 → True
2 <= 2 → True
3 <= 2 → False

Operator == dengan Skalar

print(a1 == 2)

Output:

[False True False]

Hanya elemen dengan nilai 2 yang menghasilkan True.


Operator != dengan Skalar

print(a1 != 2)

Output:

[ True False True]

Elemen yang nilainya bukan 2 menghasilkan True.


Contoh Lengkap Comparison Operators

Kita dapat mencoba seluruh operator sekaligus:

import numpy as np

a1 = np.array([1, 2, 3])

print("Lebih besar:", a1 > 2)
print("Lebih kecil:", a1 < 2)
print("Lebih besar atau sama:", a1 >= 2)
print("Lebih kecil atau sama:", a1 <= 2)
print("Sama dengan:", a1 == 2)
print("Tidak sama dengan:", a1 != 2)

Hasil:

Lebih besar: [False False True]
Lebih kecil: [ True False False]
Lebih besar atau sama: [False True True]
Lebih kecil atau sama: [ True True False]
Sama dengan: [False True False]
Tidak sama dengan: [ True False True]

Membandingkan Dua Array

Comparison juga dapat dilakukan antara dua array.

Contohnya:

a1 = np.array([10, 20, 30])
a2 = np.array([5, 20, 40])

print(a1 > a2)

Hasil:

[ True False False]

Karena:

10 > 5 → True
20 > 20 → False
30 > 40 → False

Syarat Shape dalam Comparison

Ketika membandingkan dua array, shape perlu diperhatikan.

Contohnya:

a1 = np.array([1, 2, 3])
a2 = np.array([4, 5, 6])

print(a1 > a2)

Keduanya memiliki shape:

(3,)

sehingga dapat dibandingkan element-wise.

Hasil:

[False False False]

Comparison dan Broadcasting

Seperti operasi aritmatika, comparison pada NumPy juga dapat memanfaatkan broadcasting.

Contohnya:

a = np.array([
[1, 2, 3],
[4, 5, 6]
])

print(a > 3)

Output:

[[False False False]
[ True True True]]

Satu nilai scalar 3 dibandingkan dengan seluruh elemen array.

Secara konsep:

[1, 2, 3] > 3
[4, 5, 6] > 3

menghasilkan:

[False, False, False]
[ True, True, True]

Boolean Array

Hasil comparison disebut Boolean array karena setiap elemennya bernilai:

True

atau:

False

Contoh:

a = np.array([10, 20, 30, 40, 50])

condition = a > 25

print(condition)

Output:

[False False True True True]

Boolean array tersebut dapat digunakan untuk menentukan elemen mana yang memenuhi kondisi tertentu.


Boolean Array untuk Filtering

Salah satu penggunaan comparison yang paling penting adalah filtering.

Misalnya:

a = np.array([10, 20, 30, 40, 50])

condition = a > 25

print(a[condition])

Output:

[30 40 50]

Perhatikan prosesnya:

Data:
[10, 20, 30, 40, 50]

Kondisi > 25:
[False, False, True, True, True]

Filtering:
[30, 40, 50]

Ini merupakan salah satu konsep dasar manipulasi data menggunakan NumPy.


Filtering Tanpa Variabel Kondisi

Kita juga dapat menuliskan kondisi secara langsung:

a = np.array([10, 20, 30, 40, 50])

print(a[a > 25])

Output:

[30 40 50]

Cara ini sering digunakan ketika kondisi yang digunakan sederhana.


Contoh Filtering Data

Misalnya terdapat data harga:

prices = np.array([
100,
250,
300,
450,
500
])

Kita ingin mendapatkan harga yang lebih besar dari 300:

print(prices[prices > 300])

Output:

[450 500]

Dengan comparison operator, kita dapat memilih data berdasarkan kondisi.


Comparison untuk Mendeteksi Kondisi

Boolean array juga dapat digunakan untuk memahami kondisi data.

Misalnya:

scores = np.array([
60,
75,
90,
45,
80
])

Cari nilai yang memenuhi syarat kelulusan:

passed = scores >= 70

print(passed)

Output:

[False True True False True]

Kemudian ambil nilainya:

print(scores[passed])

Output:

[75 90 80]

Menghitung Jumlah Data yang Memenuhi Kondisi

Boolean array juga dapat digunakan untuk menghitung jumlah elemen yang memenuhi kondisi.

Contohnya:

scores = np.array([
60,
75,
90,
45,
80
])

passed = scores >= 70

print(np.sum(passed))

Output:

3

Mengapa?

Karena dalam konteks numerik NumPy:

True → 1
False → 0

Sehingga:

[False, True, True, False, True]

dapat dijumlahkan sebagai:

0 + 1 + 1 + 0 + 1 = 3

Cara ini sangat berguna untuk menghitung jumlah data yang memenuhi suatu kondisi.


Any dan All

Selain np.sum(), NumPy menyediakan np.any() dan np.all() untuk mengevaluasi Boolean array.

np.any()

np.any() digunakan untuk memeriksa apakah setidaknya satu elemen bernilai True.

a = np.array([10, 20, 30])

print(np.any(a > 25))

Output:

True

Karena terdapat nilai 30 yang lebih besar dari 25.


np.all()

np.all() digunakan untuk memeriksa apakah semua elemen bernilai True.

print(np.all(a > 5))

Output:

True

Karena:

10 > 5 → True
20 > 5 → True
30 > 5 → True

Namun:

print(np.all(a > 15))

menghasilkan:

False

karena 10 tidak lebih besar dari 15.


Comparison pada Data Machine Learning

Comparison operators banyak digunakan dalam preprocessing dan analisis data.

Contohnya kita memiliki fitur umur:

ages = np.array([
17,
21,
25,
30,
45,
60
])

Kita dapat mencari data usia minimal 18 tahun:

adult = ages >= 18

print(adult)

Hasil:

[False True True True True True]

Kemudian:

print(ages[adult])

menghasilkan:

[21 25 30 45 60]

Dalam dataset nyata, konsep yang sama dapat digunakan untuk membuat filter berdasarkan kondisi tertentu.


Perbandingan dengan Nilai Rentang

Kita sering membutuhkan kondisi seperti:

nilai >= 20
dan
nilai <= 40

Untuk kondisi seperti ini, kita dapat menggunakan operator logika NumPy.

Contohnya:

a = np.array([
10,
20,
25,
30,
40,
50
])

condition = (a >= 20) & (a <= 40)

print(a[condition])

Output:

[20 25 30 40]

Tanda kurung penting ketika menggabungkan kondisi pada NumPy.

Operator:

&

digunakan untuk kondisi AND element-wise.

Operator:

|

digunakan untuk kondisi OR element-wise.

Konsep kombinasi kondisi akan dipelajari lebih lanjut pada materi filtering.


Perbedaan & dan and

Ketika bekerja dengan NumPy array, jangan menggunakan and untuk menggabungkan kondisi element-wise.

Gunakan:

(a > 10) & (a < 50)

bukan:

(a > 10) and (a < 50)

Untuk OR gunakan:

(a < 10) | (a > 50)

bukan:

(a < 10) or (a > 50)

Alasannya adalah & dan | dapat melakukan operasi Boolean secara element-wise pada array.


Kesalahan yang Sering Terjadi

Menganggap Hasil Comparison Hanya Satu Boolean

Pada NumPy:

a > 5

dapat menghasilkan:

[False, False, True, True]

bukan hanya satu True atau False.

Setiap elemen dievaluasi secara individual.


Lupa Bahwa Comparison Bersifat Element-Wise

Jika:

a1 = np.array([1, 2, 3])
a2 = np.array([2, 2, 2])

maka:

a1 > a2

menghasilkan:

[False False True]

karena setiap posisi dibandingkan secara terpisah.


Menggunakan and untuk Array

Jangan menggunakan:

(a > 10) and (a < 50)

untuk kondisi NumPy array.

Gunakan:

(a > 10) & (a < 50)

Lupa Menggunakan Tanda Kurung

Gunakan:

(a >= 20) & (a <= 40)

bukan:

a >= 20 & a <= 40

Tanda kurung membuat setiap kondisi dievaluasi dengan jelas sebelum digabungkan.


Mengabaikan Shape

Jika membandingkan dua array, selalu perhatikan shape.

Gunakan:

print(a1.shape)
print(a2.shape)

Jika shape berbeda, pastikan keduanya tetap kompatibel berdasarkan aturan broadcasting.


Workflow Comparison

Workflow sederhana untuk melakukan comparison pada NumPy:

Data Array

Tentukan Kondisi

Gunakan Comparison Operator

Boolean Array

Evaluasi Hasil

Filtering / Counting / Analisis

Contoh:

data = np.array([10, 20, 30, 40, 50])

condition = data > 25

print(condition)
print(data[condition])

Hasil:

[False False True True True]
[30 40 50]

Ringkasan

Pada materi ini kita telah mempelajari comparison operators pada NumPy array.

Hal-hal penting yang perlu diingat:

  • Comparison digunakan untuk membandingkan nilai.
  • NumPy mendukung operator >, <, >=, <=, ==, dan !=.
  • Comparison pada array dilakukan secara element-wise.
  • Hasil comparison berupa ndarray dengan dtype=bool.
  • Array dapat dibandingkan dengan array lain.
  • Array juga dapat dibandingkan dengan scalar.
  • Comparison dapat memanfaatkan broadcasting.
  • Boolean array dapat digunakan untuk filtering.
  • np.sum() dapat digunakan untuk menghitung jumlah kondisi yang bernilai True.
  • np.any() digunakan untuk mengetahui apakah setidaknya satu kondisi bernilai True.
  • np.all() digunakan untuk mengetahui apakah seluruh kondisi bernilai True.
  • Operator & digunakan untuk AND element-wise.
  • Operator | digunakan untuk OR element-wise.
  • Tanda kurung penting ketika menggabungkan beberapa kondisi.
  • Comparison dan Boolean filtering merupakan dasar penting dalam manipulasi data.

Checklist Pembelajaran

Pastikan Anda sudah memahami:

  • Apa yang dimaksud dengan comparison operator.
  • Fungsi operator >.
  • Fungsi operator <.
  • Fungsi operator >=.
  • Fungsi operator <=.
  • Fungsi operator ==.
  • Fungsi operator !=.
  • Apa yang dimaksud dengan element-wise comparison.
  • Mengapa hasil comparison berupa Boolean array.
  • Cara memeriksa dtype hasil comparison.
  • Cara membandingkan array dengan scalar.
  • Cara membandingkan dua array.
  • Hubungan comparison dengan broadcasting.
  • Cara menggunakan Boolean array untuk filtering.
  • Fungsi np.any().
  • Fungsi np.all().
  • Cara menghitung jumlah kondisi True menggunakan np.sum().
  • Perbedaan & dengan and.
  • Perbedaan | dengan or.
  • Pentingnya tanda kurung pada kombinasi kondisi.

Latihan

Buat array berikut:

data = np.array([
10,
15,
20,
25,
30,
35,
40,
45,
50
])

Kemudian lakukan latihan berikut:

  1. Cari nilai yang lebih besar dari 30.
  2. Cari nilai yang lebih kecil dari 30.
  3. Cari nilai yang lebih besar atau sama dengan 25.
  4. Cari nilai yang lebih kecil atau sama dengan 40.
  5. Cari nilai yang sama dengan 30.
  6. Cari nilai yang tidak sama dengan 30.
  7. Cari nilai pada rentang 20 sampai 40.
  8. Hitung berapa banyak nilai yang lebih besar dari 30.
  9. Gunakan np.any() untuk memeriksa apakah ada nilai lebih besar dari 45.
  10. Gunakan np.all() untuk memeriksa apakah seluruh nilai lebih besar dari 5.
  11. Buat kondisi OR untuk mencari nilai kurang dari 15 atau lebih besar dari 40.
  12. Gunakan Boolean array untuk melakukan filtering.

Sebagai tantangan tambahan, buat dua array dengan data penjualan dan bandingkan keduanya untuk mengetahui pada hari mana penjualan array pertama lebih besar daripada array kedua.