Evrensel İşlevler (ufunc’lar)
Döngü yazmadan dizilere np.sqrt, np.abs, np.exp ve np.log gibi yerleşik öğe bazlı işlevleri uygulayın.
Evrensel İşlevler (ufunc’lar), CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
ufunc İşlevleri Nedir?
Evrensel işlevler (ufunc), bir matematik işlemini dizinin her öğesine aynı anda, hızlı derlenmiş C koduyla uygular. Python döngüsünden çok daha hızlıdır. ⚡
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 slowerMatematik ufunc İşlevleri: sqrt, exp, log
En sevdiğiniz matematik işlevlerinin tümü ufunc'tur: np.sqrt, np.exp, np.log ve daha fazlası. Bunlar tüm dizilere aynı anda uygulanır ve özel durumları uygun şekilde ele alır.
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.]Trigonometrik ufunc İşlevleri
NumPy'nin np.sin ve np.cos gibi trigonometrik ufunc işlevleri açıları radyan cinsinden bekler. Önce dereceleri dönüştürmek için np.deg2rad kullanın.
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
Yuvarlama için np.floor (aşağı), np.ceil (yukarı) ve np.round (en yakına) işlevlerini kullanın. Bu işlevler kayan noktalı değerleri tüm dizi boyunca tek seferde düzenler.
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 ve np.minimum
np.maximum(a, b), iki dizinin her konumundaki büyük değeri alır. Tek bir sayı döndüren np.max işlevinden farklıdır. np.maximum(a, 0) bir ReLU'dur!
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]Değerleri Sınırlandırmak için np.clip
np.clip, her öğeyi belirli bir aralık içinde tutar: fazla düşük değerleri minimuma yükseltir, fazla yüksek değerleri maksimuma indirir. Değerleri sınırlandırmak için idealdir.
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]Çok Boyutlu Dizilerde ufunc İşlevleri
ufunc işlevleri her şekildeki dizilerde çalışır. Matematik işlemi her öğeye ayrı ayrı uygulanır ve sonuç aynı şekli korur; yeniden şekillendirme gerekmez.
import numpy as np
m = np.array([[1.0, 4.0], [9.0, 16.0]])
print(np.sqrt(m))
# [[1. 2.]
# [3. 4.]]Bellek Verimliliği için out Parametresi
Her ufunc işlevi, sonuçları zaten sahip olduğunuz bir diziye yazmak için out= bağımsız değişkenini kabul eder. Böylece yeni bir dizi oluşturulmaz; sık ve belleğe duyarlı döngülerde kullanışlıdır.
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 ve .accumulate
Her ufunc işlevinde tüm öğeleri birleştiren bir .reduce() yöntemi bulunur (np.add.reduce yalnızca sum işlemidir); .accumulate() ise kümülatif toplamlar üretir.
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Özel ufunc İşlevleri için np.frompyfunc
np.frompyfunc, herhangi bir Python işlevini dizilere uygulayabileceğiniz bir ufunc işlevine dönüştürür. Yerleşik işlevlerden daha yavaştır; bu nedenle hızlı prototip oluşturma için kullanın.
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)ufunc İşlevlerini Python Döngüleriyle Karşılaştırma
Hız farkı çok büyüktür: bir milyon öğede ufunc işlevi Python döngüsünden yaklaşık 200 kat hızlı olabilir. Sayısal işlemlerde önce her zaman ufunc işlevlerini tercih edin. 🚀
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')Hızlı Kontrol
Bu derste öğrendiğiniz NumPy ufunc işlevlerini anlayıp anlamadığınızı test edin.
Ders Özeti
Harika çalıştınız! ufunc işlevleri, hızlı C koduyla öğe bazlı matematik yapar; sqrt, exp, log ve trigonometrik işlevleri kapsar. out= bağımsız değişkeni de bellek tasarrufu sağlar. Sırada toplulaştırma işlevleri var.
Sıkça Sorulan Sorular
“Evrensel İşlevler (ufunc’lar)” dersi ücretsiz mi?
Evet — “Evrensel İşlevler (ufunc’lar)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
“Evrensel İşlevler (ufunc’lar)” dersinde ne öğreneceğim?
Döngü yazmadan dizilere np.sqrt, np.abs, np.exp ve np.log gibi yerleşik öğe bazlı işlevleri uygulayın. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Evrensel İşlevler (ufunc’lar)” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Evrensel İşlevler (ufunc’lar)
- Toplama İşlevleri
- Yayma Kuralları
- Boole Maskeleme ve Gelişmiş Dizinleme