Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Dapatkan pemahaman yang lebih mendalam tentang ciri teras dan faedah perpustakaan numpy

Dapatkan pemahaman yang lebih mendalam tentang ciri teras dan faedah perpustakaan numpy

王林
王林asal
2024-01-19 09:28:05580semak imbas

Dapatkan pemahaman yang lebih mendalam tentang ciri teras dan faedah perpustakaan numpy

Pemahaman mendalam tentang ciri teras dan kelebihan perpustakaan numpy memerlukan contoh kod khusus

Python ialah bahasa pengaturcaraan peringkat tinggi sumber terbuka dan numpy ialah perpustakaan sambungan penting untuk python. Numpy ialah singkatan kepada Numerical Python Ia menyediakan objek tatasusunan berbilang dimensi yang berkuasa dan pelbagai fungsi operasi yang sepadan Ia adalah salah satu perpustakaan teras pengkomputeran saintifik. Dalam bidang seperti pemprosesan data, pembelajaran mesin dan pembelajaran mendalam, numpy memainkan peranan penting. Artikel ini akan memberikan pengenalan yang mendalam kepada ciri teras dan kelebihan perpustakaan numpy, dengan contoh kod khusus.

  1. ndarray objek tatasusunan berbilang dimensi

Struktur data teras numpy ialah ndarray (tatasusunan N-dimensi), yang merupakan objek tatasusunan berbilang dimensi yang cekap. Jenis elemen tatasusunan ndarray mestilah sama, yang boleh menjadi integer, nombor titik terapung, dsb., dan ia disimpan secara berterusan dalam ingatan. Tatasusunan ndarray mempunyai beberapa atribut penting, termasuk bentuk (dimensi tatasusunan), dtype (jenis elemen), saiz (jumlah bilangan elemen) dan ndim (dimensi tatasusunan).

Berikut ialah contoh mudah untuk mencipta tatasusunan ndarray:

import numpy as np
a = np.array([1, 2, 3])
print(a)
print(a.shape)
print(a.dtype)

Hasil output ialah:

[1 2 3]
(3,)
int64

Kita juga boleh menukar dimensi tatasusunan ndarray melalui kaedah reshape():

b = np.array([[1, 2, 3], [4, 5, 6]])
print(b.shape)
c = b.reshape(3, 2)
print(c)

Hasil output ialah:

(2, 3)
[[1 2]
 [3 4]
 [5 6]]
  1. Operasi Vektor

Satu lagi ciri numpy ialah operasi vektorisasi, yang merupakan ciri yang sangat penting, ia bukan sahaja meningkatkan kecekapan pengkomputeran, tetapi juga memudahkan kesukaran menulis kod. Sebagai contoh, kami ingin menambah nombor tertentu pada setiap elemen dalam tatasusunan ndarray Jika kami tidak menggunakan operasi vektorisasi, kami perlu menulis kod sedemikian selalunya sangat tidak cekap dan sukar untuk dikekalkan. Menggunakan operasi vektorisasi numpy, kita hanya perlu menulis satu baris kod untuk mencapainya:

import numpy as np
a = np.array([1, 2, 3])
b = a + 1
print(b)

Hasil output ialah:

[2 3 4]
  1. Broadcast

Fungsi siaran Numpy membolehkan kami mengira tatasusunan bentuk yang berbeza, yang juga merupakan kunci kepada operasi vektorisasi numpy. Peraturan penyiaran adalah sangat mudah: jika panjang paksi dimensi tepi mengekor (iaitu, dimensi bermula dari penghujung) dua tatasusunan sepadan, atau panjang salah satu daripadanya ialah 1, ia dianggap serasi siaran. Penyiaran akan berlaku pada hilang atau panjang 1 dimensi.

Berikut ialah contoh mudah penyiaran:

a = np.arange(4)
b = np.ones(3)
c = a[:, np.newaxis] + b
print(c)

Outputnya ialah:

[[1. 1. 1.]
 [2. 2. 2.]
 [3. 3. 3.]
 [4. 4. 4.]]

Dalam contoh di atas, kami mencipta tatasusunan satu dimensi a dan tatasusunan satu dimensi b dengan dimensi yang berbeza. Untuk membolehkan mereka melakukan operasi pengvektoran, kami menggunakan ciri penyiaran untuk menambah dimensi baharu pada tatasusunan a supaya dimensi a dan b adalah sama.

  1. fungsi ufunc

Fungsi ufunc numpy ialah set fungsi yang beroperasi pada tatasusunan ndarray, termasuk: tambah (tambah), tolak (tolak), darab (darab), bahagi (bahagi) dan cari baki (baki) dll. Ciri khas fungsi ini ialah ia boleh beroperasi pada keseluruhan tatasusunan tanpa gelung. Selain itu, fungsi ufunc juga menyokong fungsi penyiaran, yang boleh beroperasi pada dua tatasusunan dengan bentuk yang berbeza, yang sangat mudah dan praktikal.

Berikut ialah contoh mudah fungsi ufunc:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.add(a, b)
print(c)

Keluarannya ialah:

[5 7 9]
  1. Menghiris dan mengindeks

Menghiris dan mengindeks dalam numpy adalah serupa dengan penghirisan dan pengindeksan python dalam python Memandangkan tatasusunan ndarray adalah berbilang dimensi, penghirisan dan pengindeksan numpy adalah lebih fleksibel. Kita boleh menggunakan pernyataan a[i] untuk mengakses elemen ke-i dalam tatasusunan numpy, atau kita boleh menggunakan a[i:j] untuk mendapatkan elemen ke-i hingga ke-j dalam tatasusunan. Selain itu, kita boleh menggunakan elips (...) untuk mewakili semua dimensi lain. Untuk tatasusunan berbilang dimensi, kita boleh menggunakan a[i, j] untuk mendapatkan elemen baris ke-i dan lajur ke-j, a[:, j] untuk mendapatkan semua elemen lajur ke-j, a [i, :] untuk mendapatkan semua elemen elemen baris ke-i, dsb.

Berikut ialah contoh ringkas untuk menghiris dan mengindeks tatasusunan berbilang dimensi:

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a[0, 1])
print(a[1, :])
print(a[:, 0:2])

Keluarannya ialah:

2
[4 5 6]
[[1 2]
 [4 5]
 [7 8]]
  1. Penjanaan nombor rawak

Numpy juga menyediakan beberapa fungsi untuk menjana nombor rawak, termasuk: .rand(), np.random.randn(), np.random.randint(), np.random.shuffle(), dsb. Fungsi ini boleh digunakan dalam bidang seperti analisis data, simulasi dan pembelajaran mesin.

Berikut ialah contoh ringkas penjanaan nombor rawak:

a = np.random.rand(3)
b = np.random.randn(3)
c = np.random.randint(0, 10, size=(2, 3))
print(a)
print(b)
print(c)

Outputnya ialah:

[0.1688015  0.15220492 0.44022309]
[-0.09097023  1.19200587  1.17187612]
[[5 8 8]
 [0 9 1]]

Ringkasan

numpy ialah perpustakaan yang sangat berkuasa dan fleksibel dengan banyak ciri teras dan kelebihan, termasuk: objek tatasusunan berbilang dimensi yang cekap, Operasi dan penyiaran vektorisasi, fungsi ufunc, penghirisan dan pengindeksan, penjanaan nombor rawak dan banyak lagi. Dalam bidang yang berkaitan dengan sains data dan kecerdasan buatan, numpy memainkan peranan penting dan tidak boleh diganti. Kita perlu memahami dengan mendalam penggunaan dan pelaksanaan kod numpy, menguasai prinsip asas dan operasi biasanya, dan menerapkannya dalam kerja dan kajian sebenar untuk meningkatkan kecekapan dan ketepatan.

Atas ialah kandungan terperinci Dapatkan pemahaman yang lebih mendalam tentang ciri teras dan faedah perpustakaan numpy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn