Sains Data

Tutorial Python NumPy

Tutorial Python NumPy
Dalam pelajaran ini mengenai perpustakaan Python NumPy, kita akan melihat bagaimana perpustakaan ini membolehkan kita menguruskan objek array N-dimensi yang kuat dengan fungsi canggih yang ada untuk memanipulasi dan beroperasi pada tatasusunan ini. Untuk melengkapkan pelajaran ini, kami akan merangkumi bahagian berikut:

Apa itu pakej Python NumPy?

Ringkasnya, NumPy bermaksud 'Numerical Python' dan itulah yang ingin dipenuhi, untuk membolehkan operasi berangka yang kompleks dilakukan pada objek array N-dimensi dengan sangat mudah dan intuitif. Ia adalah perpustakaan teras yang digunakan di pengkomputeran saintifik, dengan fungsi hadir untuk melakukan operasi algebra linear dan operasi statistik.

Salah satu konsep yang paling asas (dan menarik) bagi NumPy adalah penggunaan objek array N-dimensi. Kita boleh mengambil susunan ini hanya sebagai koleksi baris dan lajur, sama seperti fail MS-Excel. Adalah mungkin untuk menukar senarai Python menjadi array NumPy dan menjalankan fungsi di atasnya.

Perwakilan NumPy Array

Sekadar catatan sebelum memulakan, kami menggunakan persekitaran maya untuk pelajaran ini yang kami buat dengan arahan berikut:

python -m virtualenv numpy
sumber numpy / bin / aktifkan

Setelah persekitaran maya aktif, kita dapat memasang perpustakaan numpy di env maya sehingga contoh yang kita buat seterusnya dapat dilaksanakan:

memasang pip numpy

Kami melihat sesuatu seperti ini semasa kami melaksanakan perintah di atas:

Mari kita cepat menguji apakah pakej NumPy telah dipasang dengan betul dengan coretan kod pendek berikut:

import numpy sebagai np
a = np.tatasusunan ([1,2,3])
mencetak (a)

Sebaik sahaja anda menjalankan program di atas, anda akan melihat output berikut:

Kami juga boleh mempunyai tatasusunan pelbagai dimensi dengan NumPy:

multi_dimensi = np.tatasusunan ([(1, 2, 3), (4, 5, 6)])
cetak (multi_dimensi)

Ini akan menghasilkan output seperti:

[[1 2 3]
[4 5 6]]

Anda juga boleh menggunakan Anaconda untuk menjalankan contoh-contoh ini yang lebih mudah dan itulah yang kami gunakan di atas. Sekiranya anda ingin memasangnya di mesin anda, lihat pelajaran yang menerangkan “Cara Memasang Anaconda Python di Ubuntu 18.04 LTS ”dan kongsi maklum balas anda. Sekarang, mari kita maju ke pelbagai jenis operasi yang dapat dilakukan dengan array Python NumPy.

Menggunakan tatasusunan NumPy ke atas senarai Python

Penting untuk bertanya bahawa apabila Python sudah memiliki struktur data yang canggih untuk menyimpan banyak item daripada mengapa kita memerlukan array NumPy sama sekali? Susunan NumPy adalah lebih disukai daripada senarai Python kerana sebab-sebab berikut:

Marilah kita membuktikan bahawa tatasusunan NumPy menempati memori yang kurang. Ini dapat dilakukan dengan menulis program Python yang sangat sederhana:

import numpy sebagai np
masa import
import sys
python_list = julat (500)
mencetak (sys.getizeof (1) * len (senarai python))
numpy_arr = np.arange (500)
cetak (numpy_arr.saiz * numpy_arr.item)

Apabila kita menjalankan program di atas, kita akan mendapat output berikut:

14000
4000

Ini menunjukkan bahawa senarai ukuran yang sama lebih daripada 3 kali dalam ukuran jika dibandingkan dengan susunan NumPy saiz yang sama.

Melakukan operasi NumPy

Di bahagian ini, marilah kita melihat dengan cepat operasi yang dapat dilakukan pada tatasusunan NumPy.

Mencari dimensi dalam pelbagai

Oleh kerana array NumPy dapat digunakan di ruang dimensi apa pun untuk menyimpan data, kita dapat menemukan dimensi array dengan potongan kode berikut:

import numpy sebagai np
numpy_arr = np.susunan ([(1,2,3), (4,5,6)])
cetak (numpy_arr.ndim)

Kami akan melihat output sebagai "2" kerana ini adalah array 2 dimensi.

Mencari jenis data item dalam pelbagai

Kita boleh menggunakan array NumPy untuk menyimpan sebarang jenis data. Sekarang mari kita ketahui jenis data dari data yang mengandungi array:

lain_arr = np.array ([('kagum', 'b', 'kucing')])
cetak (lain_arr.dtaip)
numpy_arr = np.susunan ([(1,2,3), (4,5,6)])
cetak (numpy_arr.dtaip)

Kami menggunakan pelbagai jenis elemen dalam coretan kod di atas. Berikut adalah output yang akan ditunjukkan oleh skrip ini:

int64

Ini berlaku kerana watak ditafsirkan sebagai watak unicode dan yang kedua jelas.

Susun semula item array

Sekiranya array NumPy terdiri dari 2 baris dan 4 lajur, ia boleh dibentuk semula untuk mengandungi 4 baris dan 2 lajur. Mari tulis coretan kod ringkas untuk perkara yang sama:

asli = np.susunan ([('1', 'b', 'c', '4'), ('5', 'f', 'g', '8')])
cetak (asal)
dibentuk semula = asli.membentuk semula (4, 2)
cetak (dibentuk semula)

Sebaik sahaja kami menjalankan coretan kod di atas, kami akan mendapat output berikut dengan kedua-dua susunan dicetak ke skrin:

[['1' 'b' 'c' '4']]
['5' 'f' 'g' '8']]
[['1' 'b']]
['c' '4']]
['5' 'f']
['g' '8']]

Perhatikan bagaimana NumPy menguruskan peralihan dan mengaitkan elemen ke baris baru.

Operasi matematik pada item pelbagai

Menjalankan operasi matematik pada item array sangat mudah. Kami akan mulakan dengan menulis coretan kod mudah untuk mengetahui maksimum, minimum dan penambahan semua item array. Berikut adalah coretan kod:

numpy_arr = np.tatasusunan ([(1, 2, 3, 4, 5)])
cetak (numpy_arr.maks ())
cetak (numpy_arr.min ())
cetak (numpy_arr.jumlah ())
cetak (numpy_arr.bermaksud ())
mencetak (np.sqrt (numpy_arr))
mencetak (np.std (numpy_arr))

Dalam 2 operasi terakhir di atas, kami juga mengira punca kuasa dua dan sisihan piawai bagi setiap item array. Coretan di atas akan memberikan output berikut:

5
1
15
3.0
[[1.   1.41421356 1.73205081 2.   2.23606798]]
1.4142135623730951

Menukar senarai Python kepada tatasusunan NumPy

Walaupun anda telah menggunakan senarai Python dalam program yang ada dan anda tidak mahu mengubah semua kod itu tetapi masih ingin menggunakan tatasusunan NumPy dalam kod baru anda, ada baiknya kita mengetahui bahawa kita dapat menukar Python dengan mudah senarai ke array NumPy. Berikut adalah contoh:

# Buat 2 senarai baru tinggi dan berat
tinggi = [2.37, 2.87, 1.52, 1.51, 1.70, 2.05]
berat = [91.65, 97.52, 68.25, 88.98, 86.18, 88.45]
# Buat 2 susunan numpy dari tinggi dan berat
np_height = np.susunan (tinggi)
np_weight = np.susunan (berat)

Hanya untuk diperiksa, sekarang kita dapat mencetak jenis salah satu pemboleh ubah:

cetak (taip (np_height))

Dan ini akan menunjukkan:

Kita sekarang dapat melakukan operasi matematik ke atas semua item sekaligus. Mari lihat bagaimana kita dapat mengira BMI orang:

# Hitung bmi
bmi = np_weight / np_height ** 2
# Cetak hasilnya
cetak (bmi)

Ini akan menunjukkan BMI semua orang yang dikira berdasarkan elemen:

[16.31682957 11.8394056 29.54033934 39.02460418 29.8200692 21.04699584]

Bukankah itu mudah dan berguna? Kita bahkan dapat menapis data dengan mudah dengan keadaan sebagai pengganti indeks di dalam tanda kurung persegi:

bmi [bmi> 25]

Ini akan memberi:

tatasusunan ([29.54033934, 39.02460418, 29.8200692])

Buat urutan & pengulangan rawak dengan NumPy

Dengan banyak ciri yang terdapat di NumPy untuk membuat data rawak dan menyusunnya dalam bentuk yang diperlukan, tatasusunan NumPy banyak kali digunakan dalam menghasilkan set data ujian di banyak tempat, termasuk tujuan penyahpepijatan dan pengujian. Sebagai contoh, jika anda ingin membuat array dari 0 hingga n, kita dapat menggunakan arange (perhatikan single 'r') seperti potongan yang diberikan:

mencetak (np.arange (5))

Ini akan mengembalikan output sebagai:

[0 1 2 3 4]

Fungsi yang sama dapat digunakan untuk memberikan nilai yang lebih rendah sehingga array bermula dari angka lain daripada 0:

mencetak (np.arange (4, 12))

Ini akan mengembalikan output sebagai:

[4 5 6 7 8 9 10 11]

Angka-angka tidak perlu berterusan, mereka dapat melewati langkah memperbaiki seperti:

mencetak (np.arange (4, 14, 2))

Ini akan mengembalikan output sebagai:

[4 6 8 10 12]

Kami juga dapat memperoleh angka dalam urutan menurun dengan nilai langkau negatif:

mencetak (np.arange (14, 4, -1))

Ini akan mengembalikan output sebagai:

[14 13 12 11 10 9 8 7 6 5]

Adalah mungkin untuk membiayai nombor n antara x dan y dengan ruang yang sama dengan kaedah linspace, berikut adalah coretan kod untuk yang sama:

np.linspace (permulaan = 10, berhenti = 70, bilangan = 10, dtype = int)

Ini akan mengembalikan output sebagai:

tatasusunan ([10, 16, 23, 30, 36, 43, 50, 56, 63, 70])

Harap maklum bahawa item output tidak sama jaraknya. NumPy melakukan yang terbaik untuk melakukannya tetapi anda tidak perlu bergantung padanya seperti pembulatan.

Akhirnya, mari kita lihat bagaimana kita dapat menghasilkan sekumpulan urutan rawak dengan NumPy yang merupakan salah satu fungsi yang paling banyak digunakan untuk tujuan ujian. Kami akan memberikan rangkaian nombor ke NumPy yang akan digunakan sebagai titik awal dan akhir untuk nombor rawak:

mencetak (np.rawak.randint (0, 10, ukuran = [2,2]))

Coretan di atas menghasilkan susunan NumPy 2 hingga 2 dimensi yang akan mengandungi nombor rawak antara 0 dan 10. Berikut adalah contoh output:

[[0 4]
[8 3]]

Harap maklum kerana nombornya adalah rawak, output dapat berbeza walaupun antara 2 larian pada mesin yang sama.

Kesimpulannya

Dalam pelajaran ini, kami melihat pelbagai aspek perpustakaan pengkomputeran ini yang dapat kami gunakan dengan Python untuk mengira masalah matematik yang sederhana dan kompleks yang boleh timbul dalam pelbagai kes penggunaan NumPy adalah salah satu perpustakaan pengiraan yang paling penting ketika datang ke kejuruteraan data dan mengira data berangka, pastinya kemahiran yang perlu kita miliki.

Sila kongsi maklum balas anda mengenai pelajaran di Twitter dengan @sbmaggarwal dan @LinuxHint.

Enjin Permainan Sumber Percuma dan Terbuka untuk Membangunkan Permainan Linux
Artikel ini akan merangkumi senarai enjin permainan sumber percuma dan terbuka yang dapat digunakan untuk mengembangkan permainan 2D dan 3D di Linux. ...
Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah penambahan kedua belas untuk siri Tomb Raider - francais permainan aksi-pengembaraan yang dibuat oleh Eidos Montreal....
Cara Meningkatkan FPS di Linux?
FPS bermaksud Bingkai sesaat. Tugas FPS adalah mengukur kadar bingkai dalam pemutaran video atau persembahan permainan. Dengan kata mudah bilangan gam...