Siaran NumPy

Siaran Numpy



Array berukuran berbeda tidak dapat ditambahkan, dikurangi, atau digunakan dalam aritmatika. Menduplikasi array kecil untuk memberikan dimensi dan ukuran yang sama dengan array yang lebih besar adalah salah satu pendekatan. Saat melakukan aritmatika array, NumPy menawarkan fitur yang dikenal sebagai penyiaran array yang dapat secara signifikan mempersingkat dan menyederhanakan kode Anda. Anda akan belajar tentang ide penyiaran array dan cara menggunakannya di NumPy dalam tutorial ini. Selain itu, beberapa contoh program disediakan.

Apa itu Siaran NumPy?

Saat melakukan operasi aritmatika pada array dari berbagai bentuk, NumPy menyebutnya sebagai penyiaran. Operasi array ini sering dilakukan pada elemen masing-masing. Jika dua array memiliki bentuk yang sama, itu dapat dilakukan dengan mudah. Meskipun konsep ini berguna, penyiaran tidak selalu disarankan karena dapat mengakibatkan penggunaan memori yang tidak efisien yang memperlambat komputasi. Operasi NumPy sering dilakukan pada pasangan array yang dipecah elemen demi elemen.

Aturan Penyiaran

Serangkaian pedoman tertentu harus diikuti saat menyiarkan. Ini dijelaskan di bawah ini:







  1. Bentuk array peringkat bawah penting untuk didahului dengan 1 sampai kedua bentuk array memiliki panjang yang sama jika dua array tidak memiliki peringkat yang sama.
  2. Dua array dianggap kompatibel jika memiliki ukuran dimensi yang sama atau jika salah satunya memiliki ukuran dimensi yang disetel ke 1.
  3. Array hanya dapat disiarkan bersama jika ukuran dan dimensinya cocok.
  4. Setelah penyiaran selesai, setiap larik bertindak seolah-olah bentuknya cocok dengan elemen terbesar dalam bentuk dua larik masukan.
  5. Salah satu larik berperilaku seolah-olah direplikasi dengan dimensi itu jika larik lainnya memiliki dimensi lebih besar dari 1 dan larik pertama memiliki dimensi 1.

Sekarang, mari kita bahas beberapa contoh penerapan konsep penyiaran.



Contoh 1:

Pada pasangan array, operasi NumPy biasanya dilakukan elemen demi elemen. Kedua array harus, dalam skenario yang paling sederhana, memiliki bentuk yang sama, seperti pada contoh di bawah ini:



impor numpy

one_arr = mati rasa. Himpunan ( [ 2.0 , 3.0 , 1.0 ] )

two_arr = mati rasa. Himpunan ( [ 3.0 , 3.0 , 3.0 ] )

mencetak ( satu_arr * dua_arr )





Seperti yang Anda lihat dari kode di atas, kami memiliki dua larik: 'one_arr' dan 'two_ arr'. Masing-masing memiliki seperangkat nilai yang terpisah. Nilai dalam 'one_arr' adalah [2.0,3.0,1.0] dan 'two _arr' adalah [3.0,3.0,3.0]. Anda kemudian dapat melihat bahwa hasil penghitungan produk dari dua array ini adalah sebagai berikut:



Ketika persyaratan tertentu dipenuhi oleh bentuk array, aturan penyiaran NumPy menurunkan batasan ini. Ketika sebuah array dan nilai skalar digabungkan dalam suatu operasi, penyiaran diperlihatkan dalam bentuk paling dasar. Seperti yang Anda lihat, 3 terkandung dalam variabel bernama 'two_arr.'

impor numpy

one_arr = mati rasa. Himpunan ( [ 2.0 , 3.0 , 1.0 ] )

two_arr = 3.0

mencetak ( satu_arr * dua_arr )

Kode di atas menghasilkan hasil berikut.

Dalam contoh sebelumnya, di mana 'dua_arr' adalah sebuah array, hasilnya setara. Kita dapat membayangkan skalar 'dua_arr' yang diperluas selama proses aritmatika menjadi larik yang memiliki bentuk yang sama dengan 'satu _arr'. Larik 'dua_arr' berisi elemen baru yang hanya merupakan duplikat dari skalar pertama. Perbandingan peregangan hanyalah hipotetis. Untuk membuat operasi penyiaran sebagai memori dan komputasi ekonomis mungkin, NumPy cukup pintar untuk menggunakan nilai skalar asli daripada memproduksi salinan.

Contoh 2:

Berikut adalah program Python sederhana lainnya yang melakukan penyiaran. Sekali lagi, dua array dibuat berisi nilai yang berbeda. Hal ini diperlukan untuk membentuk kembali 'first_arr' menjadi vektor kolom dengan bentuk 3 × 1 untuk menghitung produk luar. Setelah ini, siaran dilakukan terhadap 'second_arr' untuk memberikan hasil ukuran 3×2, yang dikenal sebagai produk luar dari 'first_arr' dan 'second_arr.' Penyiaran ke 2×3 dimungkinkan karena 'result_arr' memiliki bentuk 2 ×3 serta bentuknya (3,).

Setelah mengikuti semua langkah yang disebutkan di atas, sebuah vektor harus dimasukkan dalam setiap kolom matriks yaitu 'result_arr' dan 'second_arr'. Ini memiliki dimensi 2 × 3 dan (2, ). Transpos 'result_arr' akan menghasilkan bentuk 3x2, yang kemudian dapat disiarkan ke 'second_arr' untuk mendapatkan bentuk yang sama. Biasanya, transpos ini menghasilkan produk akhir dalam bentuk 2x3.

impor numpy

first_arr = mati rasa. Himpunan ( [ 12 , 24 , 14 ] )

detik_arr = mati rasa. Himpunan ( [ limabelas , 22 ] )

mencetak ( mati rasa. membentuk kembali ( first_arr , ( 3 , 1 ) ) * detik_arr )

result_arr = mati rasa. Himpunan ( [ [ 12 , 22 , 31 ] , [ limabelas , 22 , Empat. Lima ] ] )

mencetak ( result_arr + first_arr )

mencetak ( ( hasil_arr. T + detik_arr ) . T )

mencetak ( result_arr + numpy. membentuk kembali ( detik_arr , ( dua , 1 ) ) )

mencetak ( hasil_arr * dua )

Anda dapat melihat output di bawah ini.

Contoh 3:

Array tiga dimensi dapat disiarkan menggunakan program Python berikut. Dalam contoh ini, dua array bernama 'first_arr' dan 'second_arr' telah dibuat. Array 'first_arr' berisi nilai [4,13,26,12] dan 'second_arr' berisi nilai [32,67,45,17]. 2 dimensi larik awal membuat perbedaan. Jumlah array pertama dan kedua akan ditampilkan di bawah ini setelah kode dieksekusi. Anda dapat melihat bahwa kami memiliki tiga pernyataan cetak dalam kode, yang masing-masing menampilkan teks 'Array pertama:', 'Array kedua', dan 'Array ketiga:' secara bergantian. Jumlah dari dua array yang baru dibuat ini kemudian ditampilkan.

impor numpy

first_arr = mati rasa. Himpunan ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , Empat. Lima , 17 ] ] )

detik_arr = mati rasa. Himpunan ( [ 24 , Empat. Lima , 66 , 87 ] )

mencetak ( ' \n Array pertama: ' )

mencetak ( first_arr )

mencetak ( ' \n Array kedua: ' )

mencetak ( detik_arr )

mencetak ( ' \n Jumlah larik pertama dan kedua: ' )

jumlah_hasil = first_arr + second_arr ;

mencetak ( jumlah_hasil )

Berikut adalah screenshot output dari kode yang diberikan.

Contoh 4:

Program Python terakhir yang menyiarkan larik tiga dimensi diberikan di sini. Dua array ditentukan dalam program ini, yang pertama memiliki tiga dimensi. Jumlah array pertama dan kedua akan ditampilkan seperti yang ditunjukkan di atas setelah kode dieksekusi. Meskipun nilai dalam array ini bervariasi, kode yang tersisa sama dengan yang digunakan dalam contoh program di atas.

impor numpy

first_arr = mati rasa. Himpunan ( [ [ 12 , Empat. Lima , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ lima puluh , 40 , 18 , 26 ] ] )

detik_arr = mati rasa. Himpunan ( [ 12 , 44 , 22 , 12 ] )

mencetak ( ' \n Array pertama: ' )

mencetak ( first_arr )

mencetak ( ' \n Array kedua: ' )

mencetak ( detik_arr )

mencetak ( ' \n Jumlah larik pertama dan kedua: ' )

jumlah_hasil = first_arr + second_arr ;

mencetak ( jumlah_hasil )

Anda dapat melihat pada gambar di bawah bahwa array 3 dimensi dari array pertama disajikan, diikuti oleh array 2 dimensi dari array kedua dan hasil dari keduanya menggunakan prinsip penyiaran.

Kesimpulan

Artikel ini membahas penyiaran, konsep Python yang penting. Di NumPy, istilah 'penyiaran' mengacu pada kapasitas untuk menangani berbagai bentuk array sambil melakukan operasi aritmatika yang sering dilakukan. Pokok bahasan di atas telah dibahas secara menyeluruh dengan berbagai contoh. Artikel ini menggunakan contoh program yang disebutkan untuk mendemonstrasikan cara menyiarkan pada larik 1-D, 2-D, dan 3-D, masing-masing. Anda dapat mencoba menjalankan contoh-contoh ini di sistem Anda dan melihat hasilnya untuk lebih memahami bagaimana semuanya berfungsi secara umum.