Broadcasting dan Operasi Tervektorisasi
Cara kerja broadcasting, operasi per elemen, dan menghindari loop dengan vektorisasi.
Broadcasting dan Operasi Tervektorisasi adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 3 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 Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Mengapa Melakukan Vektorisasi?
NumPy beroperasi pada seluruh larik dengan kecepatan C. Mengganti perulangan Python dengan ekspresi larik, yang disebut vektorisasi, sering kali 10 hingga 100 kali lebih cepat.
Operasi Per Elemen
Operator aritmetika diterapkan per elemen ketika bentuknya cocok. Tidak diperlukan perulangan.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
print(a + b) # [11 22 33]
print(a * b) # [10 40 90]Penyebaran Skalar
Operasi antara larik dan skalar menerapkan skalar ke setiap elemen. Skalar tersebut "disebarkan" ke seluruh larik.
a = np.array([1, 2, 3, 4])
print(a * 10) # [10 20 30 40]
print(a + 100) # [101 102 103 104]Apa Itu Penyebaran?
Penyebaran memungkinkan NumPy menggabungkan larik dengan bentuk berbeda dengan merentangkan larik yang lebih kecil secara virtual, tanpa menyalin memori.
Aturan Penyebaran
Bandingkan bentuk mulai dari dimensi paling belakang (paling kanan). Dua dimensi kompatibel jika nilainya sama atau salah satunya bernilai 1. Dimensi berukuran 1 akan direntangkan agar sesuai.
# (3, 4) with (4,) -> compatible (trailing 4 matches)
# (3, 4) with (3, 1) -> compatible (1 stretches to 4)
# (3, 4) with (3,) -> ERROR (trailing 4 vs 3)Penyebaran Vektor Baris
Larik 1D yang panjangnya sama dengan jumlah kolom akan dijumlahkan ke setiap baris.
m = np.array([[1, 2, 3], [4, 5, 6]])
row = np.array([10, 20, 30])
print(m + row)
# [[11 22 33]
# [14 25 36]]Penyebaran Vektor Kolom
Ubah bentuk vektor menjadi kolom (bentuk (n,1)) agar vektor tersebut disebarkan ke seluruh kolom, bukan baris.
col = np.array([[100], [200]]) # shape (2, 1)
print(m + col)
# [[101 102 103]
# [204 205 206]]Memusatkan Data (Penggunaan Nyata)
Mengurangkan rata-rata setiap kolom akan memusatkan setiap fitur, sebuah langkah prapemrosesan umum yang dilakukan dalam satu baris penyebaran.
data = np.array([[1.0, 10.0], [2.0, 20.0], [3.0, 30.0]])
centered = data - data.mean(axis=0)
print(centered)
# columns now have mean 0Fungsi Universal
NumPy menyediakan fungsi matematika cepat per elemen yang disebut fungsi universal: np.sqrt, np.log, np.exp, dan lainnya. Fungsi-fungsi tersebut divektorisasi dan mendukung penyebaran.
a = np.array([1.0, 4.0, 9.0, 16.0])
print(np.sqrt(a)) # [1. 2. 3. 4.]
print(np.log(a)) # natural log of each element
print(np.exp([0, 1])) # [1. 2.71828183]Kecepatan Perulangan vs Vektorisasi
Perhitungan yang sama menjadi jauh lebih cepat jika divektorisasi. Gunakan %timeit untuk merasakan perbedaannya pada satu juta elemen.
big = np.arange(1000000, dtype=float)
# Slow Python loop:
# %timeit [x*x for x in big]
# Fast vectorized:
%timeit big * big # typically tens of times fasterMenggabungkan Vektorisasi
Rangkaikan fungsi universal dan operasi aritmetika untuk menyatakan rumus secara langsung. Cara ini menghitung kurva Gauss tanpa perulangan.
x = np.linspace(-3, 3, 7)
y = np.exp(-x**2 / 2)
print(np.round(y, 3))Pemeriksaan Singkat
Uji pemahaman Anda tentang penyebaran.
Ringkasan
Hal-hal penting tentang vektorisasi:
- Operasi per elemen menghindari perulangan Python dan berjalan dengan kecepatan C
- Penyebaran menyelaraskan dimensi paling belakang; ukurannya harus sama atau bernilai 1
- Gunakan vektor kolom (n,1) untuk menyebarkan nilai ke bawah sepanjang kolom
- Fungsi universal:
np.sqrt,np.log,np.exp - Pusatkan data dengan
data - data.mean(axis=0)
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Broadcasting dan Operasi Tervektorisasi” gratis?
Ya — teks lengkap “Broadcasting dan Operasi Tervektorisasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Broadcasting dan Operasi Tervektorisasi”?
Cara kerja broadcasting, operasi per elemen, dan menghindari loop dengan vektorisasi. Kamu berlatih Learn AI with Python 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 Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python 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 3 dari 4.
Berapa lama pelajaran “Broadcasting dan Operasi Tervektorisasi” 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 Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python 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
- Pembuatan dan Properti Array
- Pengindeksan, Pemotongan, dan Pengindeksan Lanjutan
- Broadcasting dan Operasi Tervektorisasi
- Aljabar Linear dengan NumPy