Operator aritmetika hanya mencakup penjumlahan sampai pangkat. Perhitungan nyata sering menuntut lebih: nilai mutlak untuk mengukur selisih tanpa memedulikan arah, akar kuadrat untuk jarak dan simpangan, eksponensial untuk pertumbuhan, serta logaritma untuk mengulang proses sebaliknya. NumPy menyediakan fungsi-fungsi itu sebagai fungsi matematika yang diterapkan pada seluruh elemen array sekaligus — tanpa for, dengan hasil berbentuk sama seperti masukannya.

Yang kita bahas:

  • np.abs, np.sqrt, dan np.power untuk perhitungan dasar.
  • np.exp, np.log, dan np.log10 untuk eksponensial dan logaritma.
  • Perilaku np.sqrt ketika diberi bilangan negatif: hasil nan beserta cara mengelola peringatannya.

abs, sqrt, dan power #

Ketiga fungsi menerima array (atau angka) dan mengembalikan array baru; array masukan tidak berubah:

python
import numpy as np

selisih = np.array([-4, 0, 9])
print(np.abs(selisih))
print(np.sqrt(np.array([4.0, 9.0, 25.0])))
print(np.power(np.array([2, 3, 10]), 3))

Output yang Dihasilkan:

text
[4 0 9]
[2. 3. 5.]
[   8   27 1000]
  1. Baris 4 (np.abs(selisih)): nilai mutlak membuang tanda minus, sehingga besar selisih terlihat tanpa memedulikan arah — -4 menjadi 4.
  2. Baris 5 (np.sqrt(...)): akar kuadrat dihitung per elemen dan selalu menghasilkan float, ditandai titik di akhir tampilan (2., 3., 5.).
  3. Baris 6 (np.power(a, 3)): np.power adalah versi fungsi dari operator **; pangkat 3 diterapkan pada setiap elemen, sehingga 2, 3, 10 menjadi 8, 27, 1000.

exp, log, dan log10 #

np.exp(x) menghitung e pangkat x dengan e ≈ 2,71828; np.log adalah logaritma natural (ln), dan np.log10 memakai basis 10. Keduanya berpasangan sebagai invers: np.log(np.exp(x)) kembali ke x:

python
import numpy as np

waktu = np.array([0.0, 1.0, 2.0])
print(np.exp(waktu))
print(np.log(np.array([1.0, np.e, 10.0])))
print(np.log10(np.array([1.0, 10.0, 1000.0])))

Output yang Dihasilkan:

text
[1.         2.71828183 7.3890561 ]
[0.         1.         2.30258509]
[0. 1. 3.]
  1. Baris 4 (np.exp(waktu)): e^0 = 1, e^1 ≈ 2,71828183, dan e^2 ≈ 7,3890561 — pola pertumbuhan majemuk yang sama dengan contoh bunga berbunga.
  2. Baris 5 (np.log(...)): logaritma natural dari e adalah 1; logaritma natural 10 sekitar 2,30258509.
  3. Baris 6 (np.log10(...)): dengan basis 10, 10^3 = 1000 dibalik menjadi 3.0 — cocok untuk data yang skalanya menjangkau beberapa orde besaran.

Tabel berikut merangkum fungsi yang telah kita coba:

FungsiPerhitunganContoh masukanContoh hasil
np.absnilai mutlak-44
np.sqrtakar kuadrat9.03.0
np.powerpangkat2^38
np.expe pangkat x1.02.71828183
np.loglogaritma natural10.02.30258509
np.log10logaritma basis 101000.03.0

Akar dari bilangan negatif menghasilkan nan #

Akar kuadrat dari bilangan negatif tidak terdefinisi pada bilangan real. NumPy tidak menghentikan program; np.sqrt mengembalikan nan (not a number) untuk posisi yang tidak valid. Tanpa pengaturan tambahan, NumPy juga mencetak RuntimeWarning: invalid value encountered in sqrt ke stderr. Blok berikut mematikan peringatan tersebut secara lokal agar keluaran bersih:

python
import numpy as np

panjang = np.array([9.0, -1.0, 16.0])
with np.errstate(invalid="ignore"):
    akar = np.sqrt(panjang)
print(akar)
print(np.isnan(akar))

Output yang Dihasilkan:

text
[ 3. nan  4.]
[False  True False]
  1. Baris 4 (with np.errstate(invalid="ignore")): pengaturan peringatan floating point hanya berlaku di dalam blok with — di luar blok, perilaku bawaan kembali. Tanpa pengaturan ini, peringatan tetap muncul di stderr meskipun hasilnya sama.
  2. Baris 5 (np.sqrt(panjang)): elemen valid dihitung seperti biasa (3., 4.), sedangkan np.sqrt(-1.0) menghasilkan nan.
  3. Baris 7 (np.isnan(akar)): cara memeriksa nan yang benar. Perbandingan biasa tidak berguna karena nan == nan bernilai False; fungsi np.isnan mengenali posisi nan dengan tepat.