NumPy linspace(): Cara Membuat Array Angka Berspasi Merata
Diterbitkan: 2022-04-11Tutorial ini akan mengajarkan Anda cara menggunakan NumPy linspace() untuk membuat array angka dengan spasi yang sama dengan Python.
Anda akan mempelajari sintaks NumPy linspace()
, diikuti dengan contoh yang akan membantu Anda memahami cara menggunakannya.
Catatan: Untuk mengikuti tutorial ini, Anda harus menginstal Python dan NumPy.
Belum punya NumPy? Kami telah menyusun panduan instalasi cepat untuk Anda.
Ayo mulai!
Instal dan Impor NumPy
Sebelum memulai tutorial, mari kita cepat menjalankan langkah-langkah untuk menginstal perpustakaan NumPy.
Jika Anda sudah menginstal NumPy, jangan ragu untuk melompat ke bagian berikutnya.
- Jika Anda menggunakan Google Colab—lingkungan notebook Jupyter berbasis cloud, Anda dapat mengimpor NumPy dan segera mulai coding. (disarankan untuk tutorial ini)
- Jika Anda ingin menyiapkan lingkungan kerja lokal, saya sarankan untuk menginstal distribusi Anaconda dari Python. Anaconda hadir dengan beberapa paket berguna yang sudah diinstal sebelumnya. Anda dapat mengunduh penginstal untuk Sistem Operasi Anda. Proses setup hanya memakan waktu beberapa menit.
- Jika Anda sudah menginstal Python di komputer Anda, Anda masih dapat menginstal distribusi Anaconda. Anda dapat menggunakan conda atau pip untuk menginstal dan mengelola paket. Anda dapat menjalankan salah satu perintah berikut dari Anaconda Command Prompt untuk menginstal NumPy.
# Install NumPy using conda conda install numpy # Install NumPy using pip pip install numpy
Sebagai langkah selanjutnya, impor numpy
di bawah alias np
dengan menjalankan perintah berikut. Melakukan ini akan membantu Anda mereferensikan NumPy sebagai np
—tanpa harus mengetik numpy
setiap kali Anda mengakses item dalam modul.
import numpy as np
Ke depannya, kita akan menggunakan notasi titik untuk mengakses semua fungsi di library NumPy seperti ini: np.<func-name>
.
Kasus untuk Bilangan Berspasi Sama
Saat Anda bekerja dengan array NumPy, ada kalanya Anda harus membuat array dengan angka yang berjarak sama dalam suatu interval.
Sebelum kita melangkah lebih jauh, mari kita bahas fungsi serupa lainnya np.arange()
.
NumPy linspace() vs. NumPy arange()
Jika Anda pernah menggunakan NumPy sebelumnya, kemungkinan besar Anda akan menggunakan np.arange()
untuk membuat larik angka dalam rentang yang ditentukan.
Anda tahu bahwa
np.arange(start, stop, step)
mengembalikan array angka daristart
hingga tetapi tidak termasukstop
, dalam langkahstep
; ukuran langkah default adalah 1.
Namun, nilai langkah mungkin tidak selalu jelas. Mari kita lihat mengapa hal ini terjadi.
Misalnya, jika Anda membutuhkan 4 angka yang berjarak sama antara 0 dan 1, Anda tahu bahwa ukuran langkah harus 0,25. Tetapi jika Anda menggunakan np.arange()
, itu tidak menyertakan nilai stop 1. Jadi, Anda harus memilih interval yang melampaui nilai stop.
Gambar berikut mengilustrasikan beberapa contoh lagi di mana Anda memerlukan sejumlah titik tertentu yang berjarak sama dalam interval [a, b].
Contoh pertama kami tentang 4 titik dengan jarak yang sama di [0,1] cukup mudah. Anda tahu bahwa ukuran langkah antara titik harus 0,25.
Misalkan Anda memiliki contoh yang sedikit lebih terlibat—di mana Anda harus membuat daftar 7 titik dengan jarak yang sama antara 1 dan 33. Di sini, ukuran langkah mungkin tidak terlalu jelas dengan segera. Namun, Anda dapat menghitung nilai step
secara manual dalam kasus ini.
Namun, np.linspace()
hadir untuk membuatnya lebih mudah bagi Anda!
Saat menggunakan np.linspace()
, Anda hanya perlu menentukan jumlah titik dalam interval—tanpa mengkhawatirkan ukuran langkah. Dan Anda akan mendapatkan kembali array seperti yang diinginkan.
Dengan motivasi ini, mari kita lanjutkan mempelajari sintaks NumPy linspace()
di bagian selanjutnya.
Sintaks NumPy linspace()
Sintaks untuk menggunakan NumPy linspace()
ditunjukkan di bawah ini:
np.linspace(start, stop, num, endpoint, retstep, dtype, axis)
Pada awalnya, sintaks di atas mungkin tampak sangat rumit dengan banyak parameter.
Namun, kebanyakan dari mereka adalah parameter opsional , dan kita akan sampai pada sintaks yang lebih sederhana hanya dalam beberapa menit.
Sekarang mari kita mulai dengan menguraikan sintaks di atas:
-
start
danstop
masing-masing adalah titik awal dan akhir interval. Baik start dan stop dapat berupa skalar atau array. Kami akan membatasi diri pada nilai awal dan akhir skalar dalam tutorial ini. -
num
adalah jumlah titik yang berjarak sama. Dan ini adalah parameter opsional dengan nilai default 50. -
endpoint
juga merupakan parameter opsional yang dapat berupa True atau False. - Nilai default adalah True, yang berarti titik akhir akan disertakan dalam interval secara default. Namun, Anda dapat menyetelnya ke False untuk mengecualikan titik akhir.
-
retstep
adalah parameter opsional lain yang mengambil Booleans Benar atau Salah. Jika disetel ke True, nilai langkah dikembalikan. -
dtype
adalah tipe data dari angka-angka dalam array. Jenisnya biasanya disimpulkan sebagai float dan tidak perlu diberikan secara eksplisit. -
axis
adalah parameter opsional lain yang menunjukkan sumbu di mana angka harus disimpan. Dan ini hanya relevan ketika nilaistart
danstop
adalah array itu sendiri.
️ Jadi apa yang np.linspace()
?
Ini mengembalikan array N-dimensi dari nomor spasi merata. Dan jika parameter retstep
disetel ke True
, itu juga mengembalikan ukuran langkah.
Berdasarkan pembahasan sejauh ini, berikut adalah sintaks sederhana untuk menggunakan np.linspace()
:
np.linspace(start, stop, num)
Baris kode di atas akan mengembalikan array
num
angka yang berjarak sama dalam interval[start, stop]
.
Sekarang setelah Anda mengetahui sintaksnya, mari kita mulai mengkodekan contoh.
Cara Membuat Array Berspasi Merata dengan NumPy linspace()
#1. Sebagai contoh pertama kita, mari kita buat sebuah larik berisi 20 angka yang berjarak sama dalam interval [1, 5].
Anda dapat menentukan nilai start
, stop
, dan num
sebagai argumen kata kunci. Ini ditunjukkan pada sel kode di bawah ini:
import numpy as np arr1 = np.linspace(start = 1,stop = 5,num = 20) print(arr1) # Output: [1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737 4.78947368 5. ]
Perhatikan bagaimana angka-angka dalam larik mulai dari 1 dan berakhir di 5—termasuk kedua titik akhir. Juga, amati bagaimana angka-angka, termasuk poin 1 dan 5 direpresentasikan sebagai float
dalam array yang dikembalikan.
#2. Pada contoh sebelumnya, Anda telah memasukkan nilai untuk start
, stop
, dan num
sebagai argumen kata kunci . Jika Anda meneruskan argumen dalam urutan yang benar, Anda sebaiknya menggunakannya sebagai argumen posisi dengan hanya nilai, seperti yang ditunjukkan di bawah ini.
import numpy as np arr2 = np.linspace(1,5,20) print(arr2) # Output: [1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737 4.78947368 5. ]
#3. Sekarang mari kita buat array lain di mana kita mengatur retstep
ke True
.
Ini berarti bahwa fungsi sekarang akan mengembalikan larik dan langkah. Dan kita dapat membongkarnya menjadi dua variabel arr3
: array, dan step_size
: ukuran langkah yang dikembalikan.
Sel kode berikut menjelaskan bagaimana Anda dapat melakukannya.
import numpy as np arr3, step_size = np.linspace(1,5,20,retstep = True) print(arr3) # Output: [1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737 4.78947368 5. ] # Output: print(step_size) 0.21052631578947367
#4. Sebagai contoh terakhir, mari kita set endpoint
ke False
, dan periksa apa yang terjadi.
import numpy as np arr4 = np.linspace(1,5,20,endpoint = False) print(arr4) # Output: [1. 1.2 1.4 1.6 1.8 2. 2.2 2.4 2.6 2.8 3. 3.2 3.4 3.6 3.8 4. 4.2 4.4 4.6 4.8]
Dalam array yang dikembalikan, Anda dapat melihat bahwa 1 disertakan, sedangkan 5 tidak disertakan. Dan nilai terakhir dalam array adalah 4,8, tetapi kami masih memiliki 20 angka.
Sejauh ini, kami hanya membuat larik angka dengan jarak yang sama. Di bagian selanjutnya, mari kita visualisasikan dengan memplot angka-angka ini.
Cara Merencanakan Angka Berspasi Merata dalam suatu Interval
Di bagian ini, mari kita pilih [10,15] sebagai interval yang diinginkan. Dan kemudian, gunakan np.linspace()
untuk menghasilkan dua array, masing-masing dengan 8 dan 12 poin.
Setelah ini selesai, kita dapat menggunakan fungsi plotting dari library matplotlib
untuk memplotnya.
Untuk kejelasan, kami akan menjepit dua larik N1 = 8 dan N2 = 12 titik yang berjarak sama pada posisi berbeda di sepanjang sumbu y.
Cuplikan kode berikut menunjukkan hal ini.
import numpy as np import matplotlib.pyplot as plt N1 = 8 N2 = 12 a = 10 b = 15 y1 = np.zeros(N1) y2 = np.zeros(N2) x1 = np.linspace(a, b, N1) x2 = np.linspace(a, b, N2) plt.plot(x1, y1-0.5, 'o') plt.plot(x2, y2 + 0.5, 'o') plt.ylim([-1, 1]) plt.title(f'Evenly Spaced Numbers in the Interval [{a},{b}]') plt.xlabel('Interval') plt.show()
Menghasilkan poin dengan jarak yang sama dapat membantu saat bekerja dengan fungsi matematika. Kita akan mempelajarinya di bagian selanjutnya.
Cara Menggunakan NumPy linspace() dengan Fungsi Matematika
Setelah Anda membuat larik angka yang berjarak sama menggunakan np.linspace()
, Anda dapat menghitung nilai fungsi matematika dalam interval tersebut.
Dalam sel kode di bawah ini, pertama-tama Anda menghasilkan 50 titik dengan jarak yang sama dalam interval 0 hingga 2π. Dan kemudian buat array y
menggunakan np.sin()
pada array x
. Perhatikan bahwa Anda dapat melewati parameter num
, karena nilai defaultnya adalah 50. Kami masih akan menggunakannya secara eksplisit.
Sebagai langkah selanjutnya, Anda dapat memplot fungsi sinus dalam interval [0, 2π]. Untuk melakukan ini, Anda dapat menggunakan matplotlib, seperti pada contoh sebelumnya. Secara khusus, fungsi plot()
di matplotlib.pytplot
digunakan untuk membuat plot garis.
import numpy as np import matplotlib.pyplot as plt N = 50 a = 0.0 b = 2*np.pi x = np.linspace(a, b, N) y = np.sin(x) plt.plot(x, y, marker = "o") plt.ylim([-1, 1]) plt.title(f'y = sin(x)') plt.xlabel('x ---->') plt.show()
Sekarang, jalankan kode di atas dengan mengatur N
sama dengan 10. Anda akan mendapatkan plot seperti yang ditunjukkan pada gambar di bawah ini.
Dan Anda dapat melihat bahwa plotnya tidak terlalu mulus—karena Anda hanya memilih 10 poin dalam interval tersebut.
Secara umum, semakin besar jumlah poin yang Anda pertimbangkan, semakin halus plot fungsinya.
Kesimpulan
Berikut ringkasan dari apa yang telah kita pelajari.
- np.linspace(start, stop, num) mengembalikan array num angka yang berjarak sama dalam interval [start, stop] .
- Atur titik akhir parameter opsional ke False untuk mengecualikan stop , dan atur interval ke [start, stop) .
- Setel retstep ke True secara opsional untuk mendapatkan ukuran langkah.
- Hasilkan array dengan jarak yang sama menggunakan np.linspace() , lalu gunakan array dengan fungsi matematika.
Saya harap Anda sekarang memahami cara kerja np.linspace() . Anda dapat memilih untuk menjalankan contoh di atas di notebook Jupyter. Lihat panduan kami di notebook Jupyter, atau alternatif Jupyter lain yang dapat Anda pertimbangkan.
Sampai jumpa lagi di tutorial Python lainnya. Sampai saat itu, terus coding!