Bab 4 Struktur dan Tipe Data

# Atribut shape

Membaca dan mengubah pemahaman bentuk array lewat atribut shape yang menyimpan panjang setiap dimensinya.

Buka →
# Atribut ndim

Menghitung jumlah dimensi array dengan atribut ndim dan mengenali hubungannya dengan panjang tuple shape.

Buka →
# Atribut size

Menghitung jumlah total elemen array dengan atribut size dan hubungannya dengan hasil perkalian shape.

Buka →
# Atribut dtype

Memeriksa tipe data elemen array lewat atribut dtype dan memahami notasi nama tipe NumPy seperti int64 dan float64.

Buka →
# Atribut itemsize dan nbytes

Mengukur konsumsi memori array per elemen dan total menggunakan atribut itemsize dan nbytes.

Buka →
# Tipe Data Numerik

Mengenal keluarga tipe numerik NumPy: bilangan bulat berbeda lebar, floating point, dan complex beserta rentang nilainya.

Buka →
# Tipe Data Boolean

Menggunakan tipe bool NumPy pada array, pemicu konversi otomatis dari angka, dan perannya dalam boolean indexing.

Buka →
# Tipe Data String dan Object

Memahami dtype <U untuk string Unicode dan object untuk data campuran beserta konsekuensi performanya.

Buka →
# Konversi Tipe Data

Mengubah tipe data array dengan astype dan parameter dtype, termasuk perilaku saat nilai tidak dapat dikonversi.

Buka →
# Memilih Tipe Data yang Tepat

Merangkum kaidah memilih dtype: kecukupan rentang, kebutuhan presisi, konsumsi memori, dan kompatibilitas operasi.

Buka →
# Bilangan Kompleks

Bekerja dengan complex64 dan complex128 beserta real, imag, conj, angle, dan emath untuk perhitungan bilangan kompleks.

Buka →
# Aturan Promosi Tipe

Memprediksi dtype hasil operasi dengan result_type, promote_types, dan can_cast sesuai kaidah promosi tipe NumPy 2.x.

Buka →

Bab 6 Indexing dan Slicing

# Mengakses Elemen Array

Mengambil satu elemen dari array menggunakan indeks dan memahami hasilnya sebagai view, bukan salinan.

Buka →
# Indexing Array Satu Dimensi

Menggunakan indeks numerik pada array satu dimensi, dari akses tunggal hingga kesalahan out of bounds yang umum terjadi.

Buka →
# Indexing Array Multidimensi

Mengakses elemen array dua dimensi dan lebih dengan notasi [baris, kolom] serta pola berpikirnya untuk dimensi lebih tinggi.

Buka →
# Slicing Array

Mengambil rentang elemen dengan sintaks start:stop:step pada array satu dimensi maupun multidimensi.

Buka →
# Negative Indexing

Menghitung indeks dari belakang menggunakan angka negatif untuk mengambil elemen akhir atau membalik urutan data.

Buka →
# Mengambil Baris dan Kolom

Mengambil satu baris, satu kolom, atau kombinasi keduanya dari array dua dimensi dengan teknik slicing dan indexing.

Buka →
# Fancy Indexing

Memilih banyak elemen sekaligus menggunakan array indeks, termasuk pola pasangan baris-kolom dan bentuk hasilnya.

Buka →
# Boolean Indexing

Menyaring elemen array menggunakan mask boolean yang dihasilkan operasi perbandingan untuk seleksi data kondisional.

Buka →
# Memilih Elemen dengan where

Menggunakan np.where untuk menemukan posisi elemen dan memilih nilai antara dua pilihan berdasarkan kondisi.

Buka →
# View vs Copy

Membedakan view dan copy, mengenali operasi mana yang mengembalikan tampilan memori yang sama, dan menghindari perubahan tak disengaja.

Buka →
# Keluarga take, put, choose, compress, extract

Memilih elemen array secara fungsional dengan take, put, choose, compress, dan extract beserta kapan lebih tepat daripada fancy indexing.

Buka →

Bab 10 Agregasi dan Statistika

# sum dan prod

Menghitung total dan hasil kali elemen array dengan sum dan prod, termasuk agregasi per axis dan nilai awal.

Buka →
# min, max, argmin, dan argmax

Menemukan nilai terkecil dan terbesar array beserta posisi indeksnya dengan min, max, argmin, dan argmax.

Buka →
# mean, median, dan percentile

Menghitung ukuran pemusatan data dengan mean dan median serta mengenal percentile sebagai ukuran posisi.

Buka →
# Variance dan Standard Deviation

Mengukur penyebaran data dengan var dan std, memahami parameter ddof, serta menghubungkannya dengan mean.

Buka →
# Operasi Berdasarkan Axis

Mengatur arah agregasi array multidimensi dengan parameter axis dan membaca hasilnya tanpa kebingungan.

Buka →
# Cumulative Sum dan Product

Membuat akumulasi berjalan dengan cumsum dan cumprod untuk analisis pertumbuhan dan tren kumulatif.

Buka →
# Counting dan Frekuensi

Menghitung kemunculan nilai dengan bincount, histogram, dan kombinasi unique dengan return_counts.

Buka →
# quantile dan percentile

Memotong distribusi data pada posisi tertentu dengan quantile dan percentile beserta pilihan metode interpolasinya.

Buka →
# Korelasi dan Kovarians

Mengukur hubungan dua variabel dengan cov dan corrcoef serta membaca bentuk matriks hasilnya.

Buka →
# Weighted Average

Menghitung rata-rata berbobot dengan np.average dan mengenali perilakunya bila bobot tidak diberikan.

Buka →
# digitize dan Histogram 2D

Mengelompokkan nilai ke dalam bin dengan digitize dan memetakan distribusi dua variabel menggunakan histogram2d.

Buka →

Bab 13 Linear Algebra

# Pengenalan numpy.linalg

Mengenal submodul numpy.linalg, fungsi-fungsi utamanya, dan kapan submodul ini menjadi alat yang tepat.

Buka →
# Penyelesaian Sistem Persamaan Linear

Menerjemahkan sistem persamaan linear menjadi bentuk Ax = b dan menyelesaikannya dengan np.linalg.solve.

Buka →
# Inverse Matriks

Menghitung inverse matriks dengan np.linalg.inv dan memahami kapan inverse ada serta kapan sebaiknya dihindari.

Buka →
# Determinant

Menghitung determinant dengan np.linalg.det dan menafsirkan nilai nol sebagai tanda matriks singular.

Buka →
# Eigenvalue dan Eigenvector

Mencari eigenvalue dan eigenvector dengan np.linalg.eig dan membaca hasilnya, termasuk varian untuk matriks simetris.

Buka →
# Singular Value Decomposition

Memecah matriks dengan SVD menggunakan np.linalg.svd dan melihat penerapannya pada kompresi data sederhana.

Buka →
# Matrix Rank

Menghitung rank matriks dengan np.linalg.matrix_rank untuk menilai banyaknya informasi bebas dalam sistem.

Buka →
# Least Squares

Menyelesaikan sistem yang tidak memiliki solusi eksak dengan np.linalg.lstsq, dasar dari regresi linear.

Buka →
# Decompositions

Menggunakan dekomposisi QR dan Cholesky sebagai alat pemecahan persoalan yang stabil dan efisien.

Buka →
# Stabilitas Numerik

Mengenali pengaruh condition number dan urutan operasi terhadap kualitas hasil perhitungan linear algebra.

Buka →
# Pseudo-inverse dan pinv

Mengatasi matriks singular dan rank-deficient dengan np.linalg.pinv sebagai generalisasi inverse untuk least squares.

Buka →
# multi_dot, matrix_power, dan slogdet

Mengoptimalkan rantai perkalian matriks dengan multi_dot, memangkatkan matriks, dan menghitung log-determinan aman overflow.

Buka →

Bab 14 Bilangan Acak

# Pengenalan numpy.random

Mengenal modul numpy.random, perbedaan API lama dan baru, serta alasan Generator menjadi cara yang disarankan.

Buka →
# default_rng dan Generator

Membuat Generator dengan default_rng dan mengenal BitGenerator PCG64 yang berada di baliknya.

Buka →
# Reproducibility dan Random Seed

Menghasilkan angka acak yang sama setiap eksekusi dengan seed pada Generator untuk pengujian dan berbagi hasil.

Buka →
# Random Integer dan Sampling

Membuat bilangan bulat acak dengan integers dan mengambil sampel dengan atau tanpa pengembalian.

Buka →
# Uniform Distribution

Membangkitkan angka acak berdistribusi uniform dengan random dan mengenali karakter penyebarannya.

Buka →
# Normal Distribution

Membangkitkan data berdistribusi normal dengan normal dan standard_normal serta menghubungkannya dengan mean dan std.

Buka →
# Binomial dan Poisson Distribution

Memodelkan jumlah keberhasilan dengan binomial dan jumlah kejadian per interval dengan Poisson.

Buka →
# random choice

Memilih elemen dari array secara acak dengan choice, termasuk pembobotan peluang tiap pilihan.

Buka →
# permutation dan shuffle

Mengacak urutan array dengan permutation dan shuffle serta membedakan hasil salinan dan perubahan langsung.

Buka →
# Simulasi Monte Carlo

Mengestimasi nilai yang sulit dihitung eksak dengan simulasi Monte Carlo berbasis angka acak NumPy.

Buka →
# Distribusi Eksponensial, Gamma, Beta

Menyimulasikan waktu tunggu dan proporsi dengan distribusi eksponensial, gamma, dan beta dari Generator.

Buka →
# Multivariate Normal dan Kovarians

Membangkitkan sampel multivariat normal dengan kovarians tertentu dan mengaitkannya dengan dekomposisi Cholesky.

Buka →
# Bootstrap dan Resampling

Mengestimasi interval kepercayaan statistik dengan bootstrap resampling berbasis Generator yang dapat direproduksi.

Buka →

Bab 19 Performa dan Efisiensi

# Mengukur Waktu Eksekusi

Mengukur durasi kode NumPy secara adil dengan time.perf_counter dan timeit serta menjaga pengukuran tetap andal.

Buka →
# Memahami Memory Layout

Mengenal susunan data C-order dan F-order di memori serta pengaruhnya terhadap kecepatan operasi.

Buka →
# Contiguous vs Non-contiguous

Membedakan array contiguous dan non-contiguous lewat flags dan melihat dampaknya pada performa.

Buka →
# Strides dan Memory Access

Membaca atribut strides untuk memahami cara NumPy melangkah di memori saat mengakses elemen.

Buka →
# Mengurangi Penggunaan Memori

Menekan konsumsi memori array lewat pemilihan dtype, operasi in-place, dan penghapusan data tak terpakai.

Buka →
# Memilih dtype yang Efisien

Menghemat memori dan waktu dengan dtype yang tepat: int32 vs int64, float32 vs float64, dan trade-off presisinya.

Buka →
# Menghindari Copy Array

Mengenali operasi yang menyalin data dan menerapkan kebiasaan view serta out untuk menghemat pekerjaan.

Buka →
# Vectorization vs Loop

Mengukur selisih performa loop dan vectorization pada berbagai ukuran data untuk menentukan kapan vektorisasi menguntungkan.

Buka →
# Optimasi Operasi Array

Merangkai pola optimasi praktis: kurangi array sementara, manfaatkan out, gabungkan operasi, dan ukur ulang.

Buka →
# Kapan NumPy Bukan Pilihan Terbaik

Mengenali situasi ketika NumPy kurang pas: data lebih kecil dari biaya overhead, data sangat besar, atau struktur tak beraturan.

Buka →
# BLAS Threading dan Lingkungan Eksekusi

Memahami peran BLAS di balik operasi matriks, mengontrol thread dengan variabel lingkungan, dan menghindari oversubscription.

Buka →