Python Numerik: Tipe Data, Modul, dan Penggunaan Praktis

Pembaharuan Terakhir: 05/17/2026
  • Python menawarkan tipe data numerik inti (int, float, complex, bool) ditambah fungsi pembantu yang ampuh seperti math, cmath, decimal, dan random untuk perhitungan sehari-hari.
  • Modul numbers mendefinisikan kelas dasar abstrak sehingga banyak tipe numerik bawaan, NumPy, dan kustom dapat diperlakukan secara seragam sebagai instance Number.
  • Mode pembulatan, nilai khusus (NaN, tak terhingga) dan aritmatika desimal yang tepat melalui desimal sangat penting untuk kode ilmiah dan keuangan yang andal.
  • Ekosistem numerik Python yang lebih luas, khususnya NumPy, memperluas tipe inti dengan bilangan bulat lebar tetap dan array berkinerja tinggi untuk komputasi berat.

konsep python numerik

Bekerja dengan angka adalah inti dari sebagian besar program Python.Baik Anda sedang membuat skrip sederhana, mengolah data ilmiah, atau membuat prototipe algoritma, memahami bagaimana Python merepresentasikan dan memanipulasi nilai numerik adalah langkah pertama untuk menulis kode yang andal, efisien, dan berperilaku sesuai harapan Anda.

Ketika orang berbicara tentang "Python numerik", mereka sering kali merujuk pada dua hal.: di satu sisi, tipe angka bawaan dan alat pustaka standar seperti math, cmath, decimal, random ke numbersDi sisi lain, terdapat ekosistem yang lebih luas di sekitar komputasi numerik, dengan pustaka seperti NumPy yang memperluas bahasa dengan tipe numerik tambahan dan operasi vektorisasi. Panduan ini akan memandu Anda melalui fondasi tersebut secara detail, mulai dari tipe dasar hingga abstraksi tingkat lanjut.

Tipe numerik inti di Python

Python mendefinisikan beberapa kategori numerik bawaan yang mencakup sebagian besar kebutuhan sehari-hari.: bilangan bulat untuk angka utuh, bilangan floating-point untuk nilai riil dengan desimal, bilangan kompleks untuk nilai dengan bagian riil dan imajiner, dan tipe Boolean khusus yang berperilaku seperti anggota keluarga bilangan bulat yang sangat kecil. Semuanya terintegrasi dengan lancar dengan operator aritmatika Python.

Bilangan bulat (int) mewakili bilangan bulat, positif atau negatif, tanpa titik desimal.Tidak ada batasan atas tetap untuk ukurannya dalam Python standar; selama Anda memiliki memori, bilangan bulat Anda dapat bertambah besar. Nilai-nilai seperti 1, -5 or 20234567890123456789 semuanya valid int contoh, dan Anda dapat mengkonfirmasi hal itu dengan type(1) or type(-5), yang akan kembali <class 'int'>.

Bilangan titik mengambang (float) digunakan untuk bilangan real yang memiliki komponen pecahan.Angka-angka tersebut ditulis dengan titik desimal, seperti 2.0, -7.823457 or 0.5, atau dengan notasi ilmiah seperti 1e8 (yang berarti 100,000,000). Saat Anda melakukan operasi seperti pembagian, bahkan antara bilangan bulat, Python sering kali menaikkan hasilnya menjadi sebuah float; sebagai contoh, 9 / 2 hasil panen 4.5, dan type(4.5) is <class 'float'>.

Bilangan kompleks (complex) menggabungkan bagian riil dan bagian imajiner, ditulis dengan akhiran j untuk satuan imajiner. Nilai seperti 2 + 3j memiliki komponen riil 2 dan komponen imajiner 3. Anda dapat membangunnya secara langsung (misalnya 3.14j) dan memeriksanya dengan atribut seperti .real ke .imag, atau telepon .conjugate() untuk mendapatkan konjugat kompleks. Ini sangat populer di bidang teknik, pengolahan sinyal, dan komputasi ilmiah.

Boolean (bool) secara teknis juga berupa angka, Karena True ke False berperilaku seperti bilangan bulat 1 dan 0 dalam ekspresi aritmatika. Misalnya, True + 2 mengevaluasi ke 3Secara internal, bool adalah subkelas dari int, itulah sebabnya nilai boolean terintegrasi dengan mulus ke dalam perhitungan dan perbandingan.

Python memungkinkan Anda untuk dengan bebas mencampur tipe numerik ini dalam ekspresi., mempromosikannya ke tipe yang lebih umum bila diperlukan. Menambahkan sebuah int ke float menghasilkan float, dan menggabungkan bilangan floating point dengan bilangan kompleks menghasilkan hasil yang kompleks: ekspresi seperti 1 + 1.0, 2.0 + (3 + 5j) or 6 / (5 + 8j) Semua pekerjaan berjalan tanpa upacara tambahan.

tipe numerik python

Operator aritmatika dan perilaku pembagian

Setelah Anda memiliki nilai numerik, Anda menggunakan operator aritmatika biasa untuk mengolahnya.: tambahan (+), pengurangan (-), perkalian (*), pembagian (/), pembagian lantai (//), eksponensiasi (**) dan modulo (%Python menerapkan hal ini pada bilangan bulat, bilangan pecahan, dan bilangan kompleks, melakukan promosi tipe sesuai kebutuhan.

Pembagian adalah salah satu area di mana desain Python sangat disengaja.. Menggunakan / selalu menghasilkan hasil bilangan floating-point ketika kedua argumen berupa angka, bahkan jika keduanya berupa bilangan bulat. Jadi 9 / 2 hasil dalam 4.5, tidak 4Hal ini mendorong Anda untuk berpikir dalam hal pembagian bilangan riil secara default, yang biasanya Anda inginkan dalam perhitungan ilmiah atau keuangan.

Jika Anda memerlukan pembagian bilangan bulat yang mengabaikan bagian pecahannya, Anda menggunakan operator pembagian lantai (floor division). //. Sebagai contoh, 9 // 2 menghasilkan 4, dan -9 // 2 hasil panen -5, karena hasilnya dibulatkan ke bawah (menuju tak terhingga negatif). Selain itu, divmod(a, b) memberikan Anda hasil bagi dan sisa sekaligus, mengembalikan pasangan yang mencerminkan (a // b, a % b).

Di balik layar, Python dengan cermat mengoordinasikan bagaimana berbagai varian numerik berinteraksi.Salah satu pola internal yang dapat Anda lihat di pustaka standar adalah gagasan "operator fallback": fungsi yang pertama-tama mencoba implementasi spesifik tipe, misalnya untuk bilangan rasional, kemudian kembali ke operator bawaan ketika salah satu operand adalah bilangan biasa. int, float or complexInilah yang memungkinkan tipe data numerik kustom berinteraksi dengan sistem aritmatika Python menggunakan metode khusus seperti __add__ ke __radd__.

Kode pustaka untuk aritmatika rasional, seperti Fraction jenis ini, menggambarkan strategi ini dengan jelas.Saat menambahkan dua Fraction Dalam beberapa kasus, ia menghitung pecahan baru dengan mengalikan silang pembilang dan penyebut. Jika Anda menambahkan Fraction ke bilangan bulat biasa atau contoh dari numbers.Rational, ia menggunakan algoritma rasional yang tepat. Jika operand lainnya adalah float or complex, maka akan dikonversi ke tipe yang lebih luas dan didelegasikan ke operator reguler, sehingga perilakunya tetap konsisten dan intuitif.

Fungsi numerik bawaan

Selain operator mentah, Python dilengkapi dengan serangkaian fungsi bawaan yang tahu cara menangani angka.Fungsi-fungsi ini selalu tersedia tanpa perlu mengimpor apa pun dan bekerja di seluruh tipe numerik standar, ditambah objek kustom apa pun yang mengimplementasikan metode khusus yang tepat.

abs(x) Mengembalikan nilai absolut dari argumennya., mengubah angka negatif menjadi positif dan membiarkan nilai positif tidak berubah. Jika Anda memasukkan objek yang mendefinisikan __abs__()Python akan mendelegasikan tugas ke metode tersebut. Untuk bilangan kompleks, abs() Mengembalikan magnitudo (jarak dari titik asal pada bidang kompleks).

round(x, ndigits) memberikan Anda nilai yang dibulatkan ke sejumlah tempat desimal tertentu. Jika ndigits dihilangkan atau None, fungsi ini mengembalikan bilangan bulat terdekat. Tidak seperti aturan "bulatkan setengah ke atas" dalam buku pelajaran, fungsi bawaan Python round menggunakan strategi “pembulatan setengah menjadi genap” untuk hasil seri guna mengurangi bias statistik dalam perhitungan berulang.

Fungsi konversi seperti int() ke float() membentuk angka dari objek lain. Memanggil int(x) pada bilangan floating point, bagian pecahannya diabaikan (misalnya, int(1.9) is 1), Dan float(x) Menghasilkan representasi floating-point dari bilangan bulat, string, atau objek yang kompatibel. Saat Anda mengkonversi dari float ke int, tidak terjadi pembulatan; bagian desimalnya hanya dipotong.

Fitur bawaan lainnya berperan sebagai representasi dan agregasi.Fungsi seperti hex() ke oct() mengembalikan representasi string dari bilangan bulat dalam heksadesimal atau oktal dengan awalan yang sesuai (0x ke 0o). Pembantu agregasi seperti max() ke min() memindai sebuah iterable atau serangkaian argumen untuk menemukan nilai terbesar atau terkecil, sementara pow() dan ** Operator ini menghitung pangkat dan secara opsional menerima argumen ketiga untuk eksponensiasi modular.

Alat numerik tingkat lanjut: math, cmath, dan decimal

Untuk perhitungan yang lebih kompleks, Python menyediakan modul pustaka standar khusus. alih-alih memperumit bahasa inti. Yang terpenting untuk pekerjaan numerik adalah math, cmath ke decimal, masing-masing menargetkan subset masalah tertentu.

The math Modul ini berfokus pada matematika bilangan floating-point bernilai riil.Setelah mengimpornya dengan import mathAnda mendapatkan akses ke fungsi dan konstanta yang umum dibutuhkan dalam bidang teknik, fisika, dan analisis sehari-hari, semuanya diimplementasikan dalam kode C yang efisien dan beroperasi pada float nilai-nilai.

math mencakup alat-alat teori bilangan dan representasi. seperti math.ceil() untuk pembulatan ke bilangan bulat terdekat, math.floor() untuk pembulatan ke bawah, math.modf() untuk memisahkan bilangan float menjadi bagian pecahan dan bilangan bulat, dan math.frexp() / math.ldexp() untuk bekerja dengan representasi biner internal. Ini juga menyediakan rutinitas pangkat dan logaritmik seperti math.exp(), math.log(), math.log10(), math.pow() ke math.sqrt(), serta fungsi trigonometri dan hiperbolik seperti math.sin(), math.cos(), math.tan(), math.asin(), math.acos(), math.atan(), math.atan2(), math.sinh(), math.cosh() ke math.tanh().

Untuk kenyamanan, math mengekspor konstanta fundamental seperti math.pi ke math.eIni sangat berguna setiap kali Anda menghitung luas, sudut, atau pertumbuhan eksponensial dan menginginkan nilai yang konsisten dengan presisi yang baik di seluruh basis kode Anda.

Saat Anda perlu bekerja dengan angka-angka kompleks, maka... cmath Modul memainkan peran yang sama untuk bidang kompleks.API-nya mencerminkan math Namun, fungsi ini menggunakan argumen yang kompleks dan mengembalikan hasil yang kompleks, sehingga Anda dapat menghitung eksponensial, logaritma, dan fungsi trigonometri yang kompleks tanpa harus menguraikan angka secara manual menjadi bagian riil dan imajiner.

The decimal Modul ini menargetkan masalah yang berbeda: aritmatika basis-10 yang tepat.Bilangan floating-point biner standar tidak dapat merepresentasikan banyak pecahan desimal secara tepat, sehingga perhitungan seperti 0.1 + 0.2 menghasilkan hasil yang sedikit melenceng. decimal.Decimal Hal ini diatasi dengan menggunakan aritmatika basis-10 presisi arbitrer, sehingga ideal untuk aplikasi keuangan dan di mana pun Anda harus mengontrol perilaku pembulatan dengan sangat ketat.

Secara default, operasi floating-point Python mengikuti perilaku IEEE-754 dan menggunakan representasi basis-2.Ketika suatu nilai terletak tepat di tengah antara dua angka yang dapat direpresentasikan, "pembulatan setengah ke genap" diterapkan, yang berarti setengah dari nilai yang sama dibulatkan ke bawah dan setengahnya dibulatkan ke atas. Ini menghindari penyimpangan sistematis dalam komputasi besar. Jika Anda menginginkan semantik "pembulatan setengah ke atas" komersial, Anda dapat mengkonfigurasinya. decimal konteks untuk digunakan ROUND_HALF_UP, yang selalu bergeser 5 nilai menjauh dari nol.

Bekerja dengan tipe data numerik dalam praktik

Mempelajari bagaimana angka berinteraksi adalah cara yang bagus untuk membangun intuisi.Buka interpreter Python dan buat campuran bilangan bulat, bilangan pecahan, dan nilai kompleks, lalu coba operasi dasar di antara nilai-nilai tersebut. Penambahan dan perkalian cukup mudah, tetapi sangat bermanfaat untuk bereksperimen dengan pembagian, pembagian lantai, pembulatan, dan konversi, sambil memperhatikan bagaimana tipe hasilnya berubah.

Konversi antar tipe numerik terkadang diperlukan untuk mencocokkan ekspektasi API atau untuk menyederhanakan logika.Jika Anda memiliki angka desimal dan hanya menginginkan bagian bilangan bulatnya, tetapkan ke variabel seperti ini: my_float = 1.9 lalu menelepon my_int = int(my_float)Pencetakan my_int memberikan 1, dan type(my_int) menegaskan bahwa itu adalah sebuah intPerlu diingat bahwa bagian pecahan akan diabaikan dan tidak dibulatkan.

Arah sebaliknya—promosi ke tipe yang lebih umum—sering terjadi secara implisit.Saat Anda menambahkan bilangan bulat dan bilangan pecahan, Python akan mengembalikan bilangan pecahan tanpa bertanya, karena sistem bilangan riil mengandung bilangan bulat. Promosi yang sama terjadi saat Anda menggabungkan bilangan pecahan dan bilangan kompleks: nilai titik pecahan diperlakukan seolah-olah memiliki bagian imajiner nol, dan hasilnya adalah bilangan kompleks.

Bilangan kompleks memiliki beberapa kemudahan bawaan yang membuatnya terasa alami.Anda dapat memeriksanya secara langsung. a.real ke a.imag Untuk mendapatkan komponennya, panggil a.conjugate() untuk membalik tanda bagian imajiner, dan meneruskannya ke fungsi-fungsi di cmath tanpa konversi manual. Sekalipun Anda jarang menggunakannya, mengetahui keberadaannya dan cara kerjanya akan membantu saat Anda menemukan kode ilmiah.

Akurasi dan presisi selalu penting ketika berurusan dengan data floating-point.Ketepatan efektif dari Python standar float Angka desimalnya sekitar 15 digit; di luar itu, digit ke-16 bisa tidak dapat diandalkan. Untuk banyak tugas, ini вполне dapat diterima, tetapi jika Anda memerlukan aritmatika desimal yang tepat atau pembulatan yang lebih dapat diprediksi, maka decimal Modul ini memberi Anda kendali yang Anda butuhkan dengan mengorbankan sedikit performa.

Angka acak dan nilai numerik khusus

Menghasilkan angka acak adalah tugas lain yang sering dilakukan dalam alur kerja numerik Python.Baik Anda sedang membuat game sederhana, menjalankan simulasi Monte Carlo, atau menulis kasus uji yang menguji kondisi ekstrem. Pustaka standar ini random Modul ini menyediakan dasar-dasar untuk skenario semacam itu.

random.randint(a, b) menghasilkan bilangan bulat pseudo-acak antara a ke bTermasukHal ini memudahkan untuk mensimulasikan lemparan dadu atau memilih indeks acak dalam sebuah daftar. Untuk nilai floating-point, fungsi seperti random.random() dan fungsi pembantu terkait menghasilkan angka acak seragam dalam rentang seperti [0.0, 1.0), siap untuk diskalakan atau ditransformasikan untuk distribusi khusus Anda.

Python juga menampilkan beberapa nilai numerik yang mewakili kuantitas yang tidak biasa atau "kasus khusus".Salah satunya adalah NaN (“Bukan Angka”), yang diperoleh misalnya dengan memanggil float('nan'). NaN menunjukkan hasil yang tidak terdefinisi atau tidak dapat direpresentasikan, seperti hasil pembagian nol dengan nol atau penguraian bidang numerik yang rusak dari data masukan.

Selain NaN, Python mendukung tak terhingga positif dan negatif., dibangun menggunakan float('inf') ke float('-inf')Nilai-nilai ini berguna sebagai nilai penanda saat menginisialisasi variabel untuk algoritma yang mencari nilai minimum atau maksimum, atau saat memodelkan rentang tak terbatas dalam metode numerik.

Bekerja dengan nilai NaN memerlukan kehati-hatian khusus karena nilai tersebut tidak berperilaku seperti angka biasa.Perbandingan yang melibatkan NaN selalu salah (bahkan nan == nan), dan aritmatika dengan NaN cenderung menyebarkan NaN ke seluruh hasil. Meskipun panduan ini tidak membahas secara mendalam semantik NaN, menyadari keanehannya membantu Anda men-debug pipeline data dan algoritma numerik dengan lebih efektif.

Hierarki numerik abstrak dengan modul angka

Seiring kode Anda menjadi lebih kompleks, Anda mungkin memerlukan cara yang fleksibel untuk mengenali nilai "numerik". tanpa memeriksa secara manual terhadap setiap jenis konkret (seperti int, float, complex dan skalar NumPy). Di sinilah letaknya numbers Modul ini hadir untuk menyediakan hierarki abstrak dari tipe data numerik.

The numbers Modul ini mendefinisikan kelas dasar abstrak (ABC) yang menjelaskan perilaku numerik., Seperti Number, Complex, Real, Rational ke IntegralKelas-kelas ini tidak dimaksudkan untuk diinstansiasi secara langsung. Sebaliknya, tipe numerik konkret mewarisi dari kelas-kelas ini untuk menandakan bahwa mereka mengimplementasikan operasi dan properti yang dibutuhkan.

ABC yang paling umum adalah numbers.Number, yang mewakili “tipe numerik apa pun”Jika Anda ingin menguji apakah suatu variabel harus diperlakukan sebagai numerik—mungkin selama proses debugging atau saat menulis skrip utilitas kecil—Anda dapat menggabungkannya. isinstance dengan ABC ini. Misalnya, isinstance(x, Number) Pengembalian True untuk tipe numerik bawaan dan banyak tipe numerik eksternal, seperti berbagai skalar NumPy.

Ilustrasi praktis menggunakan tipe NumPy bersamaan dengan fungsi bawaan Python.Jika Anda mengimpor NumPy sebagai np lalu lakukan perulangan pada nilai-nilai seperti 1, 1., -0.2, 1e8, np.int64(1), np.int0(10), np.int16(2), np.float64(10), np.complex64(10) ke np.int32(89), memanggil isinstance(value, Number) Untuk setiap tipe data, Anda akan melihat bahwa semuanya dianggap sebagai angka. Ini akan menghemat waktu Anda karena tidak perlu menulis serangkaian pengecekan tipe data yang panjang untuk setiap kelas tertentu.

Perlu dicatat bahwa isinstance Penggunaan yang berlebihan justru dianggap sebagai "bau" kode.Ketergantungan yang berlebihan pada pengecekan tipe eksplisit dapat menandakan masalah desain yang lebih dalam dalam program berorientasi objek. Meskipun demikian, untuk debugging cepat, skrip eksplorasi, atau utilitas kecil, pengecekan terhadap numbers.Number adalah alat yang ampuh dan pragmatis untuk memverifikasi bahwa variabel Anda benar-benar berperilaku seperti angka.

Ekosistem numerik yang diperluas: NumPy dan tipe data kustom.

Meskipun Python inti hanya menyediakan sejumlah kecil tipe numerik serbaguna, ekosistem yang lebih luas sangat memperluas pilihan Anda.NumPy, khususnya, memperkenalkan banyak varian numerik yang dirancang untuk komputasi efisien pada array dan matriks besar.

NumPy mendefinisikan tipe bilangan bulat dengan lebar tetap seperti numpy.int64, numpy.int32, numpy.int16 dan alias khusus seperti numpy.int0Ini menyerupai jenis-jenis yang ditemukan dalam bahasa pemrograman tingkat rendah yang berorientasi numerik seperti Fortran dan C, di mana mengetahui ukuran penyimpanan dan perilaku angka secara tepat sangat penting untuk kinerja dan interoperabilitas.

Selain bilangan bulat, NumPy menawarkan tipe data seperti numpy.float64 ke numpy.complex64, bersama dengan banyak lainnya, yang terintegrasi dengan rapi dengan array dan ufuncs (fungsi universal). Tipe-tipe ini biasanya terdaftar sebagai instance dari ABC yang sesuai dari numbers modul, itulah sebabnya pemeriksaan dilakukan terhadap numbers.Number bekerja seperti yang diilustrasikan sebelumnya.

Desain Python sengaja membuat model numerik intinya tetap sederhana dan mudah diakses.Alih-alih memaksa setiap pengguna untuk mengelola lusinan variasi numerik yang berbeda, pendekatan ini berfokus pada tiga tipe numerik dasar (ditambah boolean), sekaligus memudahkan pustaka khusus untuk memperluas repertoar ini sesuai kebutuhan. Lingkungan yang berfokus pada rekayasa, seperti yang dibangun oleh perusahaan perangkat lunak simulasi, secara alami akan sangat bergantung pada tipe dan pustaka yang diperluas ini.

Jika Anda membuat kelas numerik sendiri, ikuti pola dari numbers ke fractions membantu Anda beradaptasi dengan ekosistemDengan membuat subkelas ABC yang sesuai dan mengimplementasikan metode khusus yang dibutuhkan (__add__, __radd__, __mul__(dan seterusnya), tipe data kustom Anda dapat berinteraksi secara alami dengan operator Python, fungsi numerik bawaan, dan pustaka numerik lainnya.

Secara keseluruhan, Python numerik menggabungkan sistem tipe inti yang bersih, modul pustaka standar yang andal, dan ekosistem pustaka yang kaya. Seperti NumPy, menciptakan lingkungan di mana Anda dapat dengan nyaman beralih dari aritmatika sederhana ke perhitungan teknik tingkat lanjut. Setelah Anda memahami bagaimana bilangan bulat, bilangan pecahan, bilangan kompleks, nilai khusus, aturan pembulatan, dan kelas numerik abstrak saling berkaitan, Anda dapat bernalar lebih percaya diri tentang kode Anda, menghindari bug yang sulit dideteksi, dan memilih alat yang tepat untuk setiap tugas numerik yang Anda temui.

Pos terkait: