0Pricing
Pandas & NumPy Academy · Pelajaran

Fungsi Universal (ufunc)

Terapkan fungsi bawaan per elemen seperti np.sqrt, np.abs, np.exp, dan np.log pada array tanpa menulis perulangan

Fungsi Universal (ufunc) adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa Itu ufunc?

Fungsi universal (ufunc) menjalankan operasi matematika pada setiap elemen array sekaligus, dalam C terkompilasi yang cepat — jauh lebih cepat daripada loop Python. ⚡

import numpy as np

a = np.array([1.0, 4.0, 9.0, 16.0])
print(np.sqrt(a))  # [1. 2. 3. 4.]
# Equivalent Python loop would be hundreds of times slower

ufunc Matematika: sqrt, exp, log

Semua fungsi matematika favorit Anda adalah ufunc: np.sqrt, np.exp, np.log, dan lainnya. Fungsi-fungsi ini diterapkan ke seluruh array sekaligus dan menangani kasus khusus dengan baik.

import numpy as np

a = np.array([0.0, 1.0, 2.0, 3.0])
print(np.exp(a))         # [1.    2.718 7.389 20.086]
print(np.log(np.exp(a))) # [0. 1. 2. 3.]
print(np.log2(np.array([1, 2, 4, 8])))  # [0. 1. 2. 3.]

ufunc Trigonometri

ufunc trigonometri NumPy seperti np.sin dan np.cos mengharapkan sudut dalam radian. Gunakan np.deg2rad untuk mengonversi derajat terlebih dahulu.

import numpy as np

angles = np.array([0, 30, 60, 90])
rad = np.deg2rad(angles)
print(np.sin(rad).round(4))  # [0.     0.5    0.866  1.   ]
print(np.cos(rad).round(4))  # [1.     0.866  0.5    0.   ]

np.abs, np.floor, np.ceil, np.round

Untuk pembulatan, gunakan np.floor (ke bawah), np.ceil (ke atas), dan np.round (terdekat). Semua fungsi ini merapikan nilai float di seluruh array sekaligus.

import numpy as np

a = np.array([-2.7, 0.4, 1.5, 3.9])
print(np.abs(a))     # [2.7 0.4 1.5 3.9]
print(np.floor(a))   # [-3.  0.  1.  3.]
print(np.ceil(a))    # [-2.  1.  2.  4.]
print(np.round(a))   # [-3.  0.  2.  4.]

np.maximum dan np.minimum

np.maximum(a, b) mengambil nilai yang lebih besar pada setiap posisi dari dua array — berbeda dari np.max, yang mengembalikan satu angka. np.maximum(a, 0) adalah ReLU!

import numpy as np

a = np.array([-3, 1, 5, -2, 4])
b = np.array([0, 0, 3, 3, 3])

print(np.maximum(a, b))  # [0 1 5 3 4]
print(np.minimum(a, b))  # [-3  0  3 -2  3]

# ReLU
print(np.maximum(a, 0))  # [0 1 5 0 4]

np.clip untuk Membatasi Nilai

np.clip menjaga setiap elemen tetap dalam suatu rentang: nilai yang terlalu rendah dinaikkan ke nilai minimum, sedangkan nilai yang terlalu tinggi diturunkan ke nilai maksimum. Cocok untuk membatasi nilai.

import numpy as np

a = np.array([0.1, 0.5, -0.2, 1.3, 0.9])
clipped = np.clip(a, 0.0, 1.0)
print(clipped)  # [0.1 0.5 0.  1.  0.9]

ufunc pada Array Multidimensi

ufunc bekerja pada array dengan shape apa pun. Operasi matematika diterapkan pada setiap elemen secara mandiri, dan hasilnya mempertahankan shape yang sama — tidak perlu mengubah shape.

import numpy as np

m = np.array([[1.0, 4.0], [9.0, 16.0]])
print(np.sqrt(m))
# [[1. 2.]
#  [3. 4.]]

Parameter out untuk Efisiensi Memori

Setiap ufunc menerima argumen out= untuk menulis hasil ke array yang sudah Anda miliki. Dengan begitu, NumPy tidak perlu membuat array baru — berguna dalam loop yang ketat dan sensitif terhadap memori.

import numpy as np

a = np.array([1.0, 4.0, 9.0])
result = np.empty(3)
np.sqrt(a, out=result)  # write directly into result
print(result)  # [1. 2. 3.]

np.add.reduce dan .accumulate

Setiap ufunc memiliki metode .reduce() yang menggabungkan semua elemen (np.add.reduce hanyalah penjumlahan) dan .accumulate() untuk menghasilkan total berjalan.

import numpy as np

a = np.array([1, 2, 3, 4, 5])
print(np.add.reduce(a))       # 15
print(np.add.accumulate(a))   # [ 1  3  6 10 15]
print(np.multiply.reduce(a))  # 120

np.frompyfunc untuk ufunc Kustom

np.frompyfunc mengubah fungsi Python apa pun menjadi ufunc yang dapat diterapkan pada array. Fungsinya lebih lambat daripada fungsi bawaan, jadi gunakan untuk pembuatan prototipe cepat.

import numpy as np

def clamp_positive(x):
    return x if x > 0 else 0.0

vfunc = np.frompyfunc(clamp_positive, 1, 1)
a = np.array([-2, 3, -1, 5])
print(vfunc(a))  # [0.0 3 0.0 5]  (object dtype)

Membandingkan ufunc dengan Loop Python

Perbedaan kecepatannya sangat besar: pada satu juta elemen, ufunc dapat sekitar 200 kali lebih cepat daripada loop Python. Untuk pekerjaan numerik, selalu gunakan ufunc terlebih dahulu. 🚀

import numpy as np
import time

a = np.random.rand(1_000_000)

start = time.perf_counter()
np.sqrt(a)
print('ufunc:', round(time.perf_counter() - start, 4), 's')

start = time.perf_counter()
[x ** 0.5 for x in a]
print('loop:', round(time.perf_counter() - start, 4), 's')

Pemeriksaan Singkat

Uji pemahaman Anda tentang ufunc NumPy dari pelajaran ini.

Rangkuman Pelajaran

Kerja bagus! ufunc melakukan matematika per elemen dalam C yang cepat, mencakup sqrt, exp, log, dan trigonometri, sedangkan argumen out= menghemat memori. Berikutnya: fungsi agregasi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Fungsi Universal (ufunc)” gratis?

Ya — teks lengkap “Fungsi Universal (ufunc)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Fungsi Universal (ufunc)”?

Terapkan fungsi bawaan per elemen seperti np.sqrt, np.abs, np.exp, dan np.log pada array tanpa menulis perulangan Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?

Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Fungsi Universal (ufunc)” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Fungsi Universal (ufunc)
  2. Fungsi Agregasi
  3. Aturan Broadcasting
  4. Masking Boolean dan Pengindeksan Lanjutan
← Kembali ke Pandas & NumPy Academy