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, dannp.poweruntuk perhitungan dasar.np.exp,np.log, dannp.log10untuk eksponensial dan logaritma.- Perilaku
np.sqrtketika diberi bilangan negatif: hasilnanbeserta cara mengelola peringatannya.
abs, sqrt, dan power #
Ketiga fungsi menerima array (atau angka) dan mengembalikan array baru; array masukan tidak berubah:
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:
[4 0 9]
[2. 3. 5.]
[ 8 27 1000]- Baris 4 (
np.abs(selisih)): nilai mutlak membuang tanda minus, sehingga besar selisih terlihat tanpa memedulikan arah —-4menjadi4. - Baris 5 (
np.sqrt(...)): akar kuadrat dihitung per elemen dan selalu menghasilkan float, ditandai titik di akhir tampilan (2.,3.,5.). - Baris 6 (
np.power(a, 3)):np.poweradalah versi fungsi dari operator**; pangkat 3 diterapkan pada setiap elemen, sehingga2,3,10menjadi8,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:
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:
[1. 2.71828183 7.3890561 ]
[0. 1. 2.30258509]
[0. 1. 3.]- Baris 4 (
np.exp(waktu)):e^0 = 1,e^1 ≈ 2,71828183, dane^2 ≈ 7,3890561— pola pertumbuhan majemuk yang sama dengan contoh bunga berbunga. - Baris 5 (
np.log(...)): logaritma natural darieadalah1; logaritma natural 10 sekitar2,30258509. - Baris 6 (
np.log10(...)): dengan basis 10,10^3 = 1000dibalik menjadi3.0— cocok untuk data yang skalanya menjangkau beberapa orde besaran.
Tabel berikut merangkum fungsi yang telah kita coba:
| Fungsi | Perhitungan | Contoh masukan | Contoh hasil |
|---|---|---|---|
np.abs | nilai mutlak | -4 | 4 |
np.sqrt | akar kuadrat | 9.0 | 3.0 |
np.power | pangkat | 2^3 | 8 |
np.exp | e pangkat x | 1.0 | 2.71828183 |
np.log | logaritma natural | 10.0 | 2.30258509 |
np.log10 | logaritma basis 10 | 1000.0 | 3.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:
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:
[ 3. nan 4.]
[False True False]- Baris 4 (
with np.errstate(invalid="ignore")): pengaturan peringatan floating point hanya berlaku di dalam blokwith— di luar blok, perilaku bawaan kembali. Tanpa pengaturan ini, peringatan tetap muncul di stderr meskipun hasilnya sama. - Baris 5 (
np.sqrt(panjang)): elemen valid dihitung seperti biasa (3.,4.), sedangkannp.sqrt(-1.0)menghasilkannan. - Baris 7 (
np.isnan(akar)): cara memeriksananyang benar. Perbandingan biasa tidak berguna karenanan == nanbernilaiFalse; fungsinp.isnanmengenali posisinandengan tepat.