{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Pengenalan & Komputasi Array NumPy\n",
        "\n",
        "**NumPy** (*Numerical Python*) adalah pustaka dasar untuk komputasi ilmiah dalam Python. NumPy menyediakan struktur data **ndarray** (*N-dimensional array*) yang jauh lebih cepat dan hemat memori dibandingkan list bawaan Python."
      ],
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 1. Inisiasi dan Membuat Array NumPy"
      ],
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {},
      "source": [
        "import numpy as np\n",
        "\n",
        "# Membuat Array 1 Dimensi (Vektor)\n",
        "arr_1d = np.array([10, 20, 30, 40, 50])\n",
        "print(\"Array 1D:\", arr_1d)\n",
        "print(\"Bentuk (shape):\", arr_1d.shape)\n",
        "print(\"Tipe data (dtype):\", arr_1d.dtype)\n",
        "\n",
        "# Membuat Array 2 Dimensi (Matriks)\n",
        "matrix_2d = np.array([\n",
        "    [1, 2, 3],\n",
        "    [4, 5, 6],\n",
        "    [7, 8, 9]\n",
        "])\n",
        "print(\"\n",
        "Matriks 2D:\n",
        "\", matrix_2d)\n",
        "print(\"Dimensi (ndim):\", matrix_2d.ndim)\n",
        "print(\"Ukuran (size):\", matrix_2d.size)"
      ],
      "outputs": [],
      "execution_count": null
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 2. Fungsi Pembuat Array Otomatis\n",
        "NumPy menyediakan fungsi instan untuk membuat array bernilai nol, satu, deret, atau nilai acak."
      ],
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {},
      "source": [
        "# Array berisi nol (zeros)\n",
        "zeros = np.zeros((2, 4))\n",
        "\n",
        "# Array berisi deret angka urut (arange)\n",
        "deret = np.arange(0, 20, 2)  # start=0, stop=20, step=2\n",
        "\n",
        "# Array linear space (linspace)\n",
        "lin = np.linspace(0, 1, 5)  # 5 titik berjarak sama dari 0 s.d. 1\n",
        "\n",
        "print(\"Zeros (2x4):\n",
        "\", zeros)\n",
        "print(\"Arange (kelipatan 2):\", deret)\n",
        "print(\"Linspace (0 s.d. 1):\", lin)"
      ],
      "outputs": [],
      "execution_count": null
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 3. Operasi Matematika Vektorisasi (Vectorization)\n",
        "Salah satu keunggulan terbesar NumPy adalah operasi aritmatika dieksekusi secara instan per elemen (*element-wise*) tanpa perlu menuliskan perulangan `for`."
      ],
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {},
      "source": [
        "a = np.array([1, 2, 3, 4])\n",
        "b = np.array([10, 20, 30, 40])\n",
        "\n",
        "print(\"Penjumlahan (a + b) =\", a + b)\n",
        "print(\"Perkalian (a * 3)   =\", a * 3)\n",
        "print(\"Kuadrat (a ** 2)    =\", a ** 2)\n",
        "print(\"Sinus np.sin(a)     =\", np.round(np.sin(a), 4))"
      ],
      "outputs": [],
      "execution_count": null
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 4. Fungsi Agregasi Statistik NumPy"
      ],
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {},
      "source": [
        "data_sampel = np.array([45, 82, 67, 90, 54, 78, 88, 95, 72, 84])\n",
        "\n",
        "print(\"Rata-rata (Mean)      :\", np.mean(data_sampel))\n",
        "print(\"Median (Nilai Tengah) :\", np.median(data_sampel))\n",
        "print(\"Standar Deviasi (Std) :\", np.std(data_sampel))\n",
        "print(\"Varians (Variance)    :\", np.var(data_sampel))\n",
        "print(\"Nilai Minimum         :\", np.min(data_sampel))\n",
        "print(\"Nilai Maksimum        :\", np.max(data_sampel))"
      ],
      "outputs": [],
      "execution_count": null
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "name": "python",
      "version": "3.11.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 2
}