Pada bagian ini kita akan melihat pengindeksan dan pemotongan. Ini bekerja dengan cara yang mirip dengan pengindeksan dan pemotongan dengan daftar Python standar, dengan beberapa perbedaan
Berikut adalah video yang membahas topik ini
Mengindeks array
Pengindeksan digunakan untuk mendapatkan elemen individu dari array, tetapi juga dapat digunakan untuk mendapatkan seluruh baris, kolom, atau bidang dari array multi-dimensi
Pengindeksan dalam 1 dimensi
Kita dapat membuat array numpy 1 dimensi dari daftar seperti ini
import numpy as np a1 = np.array[[1, 2, 3, 4]] print[a1] # [1, 2, 3, 4]
Kita dapat mengindeks ke dalam array ini untuk mendapatkan elemen individual, persis sama dengan daftar atau tuple normal
print[a1[0]] # 1 print[a1[2]] # 3_
Pengindeksan dalam 2 dimensi
Kita dapat membuat array numpy 2 dimensi dari daftar daftar python, seperti ini
import numpy as np a2 = np.array[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]
Berikut adalah diagram dari array
Kita dapat mengindeks elemen array menggunakan dua indeks - i memilih baris, dan j memilih kolom
print[a2[2, 1]] # 8
Perhatikan sintaksnya - nilai i dan j keduanya berada di dalam tanda kurung siku, dipisahkan dengan koma [indeks sebenarnya adalah tupel [2, 1], tetapi pengepakan tupel digunakan]. Contoh mengambil baris 2, kolom 1, yang memiliki nilai 8. Ini dibandingkan dengan sintaks yang mungkin Anda gunakan dengan daftar 2D [yaitu daftar daftar]
v = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print[v[2][1]] # 8_
Memilih baris atau kolom
Jika kami dapat menyediakan satu indeks, itu akan mengambil satu baris [nilai i] dan mengembalikannya sebagai array peringkat 1
print[a2[2]] # [7, 8, 9]
Itu sangat mirip dengan apa yang akan terjadi dengan daftar 2D. Namun, numpy memungkinkan kita untuk memilih satu kolom juga
print[a2[:, 1]] # [2, 5, 8]_
Kami melompat ke depan sedikit untuk mengiris, nanti di tutorial ini, tetapi yang dimaksud dengan sintaks ini adalah
- untuk nilai i, ambil semua nilai [. adalah irisan penuh, dari awal hingga akhir]
- untuk nilai j ambil 1
Memberikan array ini [2, 5, 8]
Array yang Anda dapatkan kembali saat Anda mengindeks atau mengiris array numpy adalah tampilan dari array asli. Ini adalah data yang sama, hanya diakses dalam urutan yang berbeda. Jika Anda mengubah tampilan, Anda akan mengubah elemen terkait dalam larik asli
Pengindeksan dalam 3 dimensi
Kita dapat membuat array numpy 3 dimensi dari daftar daftar daftar python, seperti ini
import numpy as np a3 = np.array[[[[10, 11, 12], [13, 14, 15], [16, 17, 18]], [[20, 21, 22], [23, 24, 25], [26, 27, 28]], [[30, 31, 32], [33, 34, 35], [36, 37, 38]]]]
Berikut adalah diagram dari array
Array 3D seperti tumpukan matriks
- Indeks pertama, i, memilih matriks
- Indeks kedua, j, memilih baris
- Indeks ketiga, k, memilih kolom
Ini adalah diagram yang sama, sebarkan sedikit agar kita bisa melihat nilainya
Berikut adalah cara mengindeks nilai tertentu dalam larik 3D
print[a3[2, 0, 1]] # 31_
Ini memilih indeks matriks 2 [matriks akhir], baris 0, kolom 1, memberikan nilai 31
Memilih baris atau kolom dalam larik 3D
Anda dapat mengakses setiap baris atau kolom dalam larik 3D. Ada 3 kasus
Kasus 1 - menentukan dua indeks pertama. Dalam hal ini, Anda memilih nilai i [matriks], dan nilai j [baris]. Ini akan memilih baris tertentu. Dalam contoh ini kita memilih baris 2 dari matriks 1
print[a3[1, 2]] # [26 27 28]_
Kasus 2 - menentukan nilai i [matriks], dan nilai k [kolom], menggunakan irisan penuh [. ] untuk nilai j [baris]. Ini akan memilih kolom tertentu. Dalam contoh ini kami memilih kolom 1 dari matriks 0
print[a1[0]] # 1 print[a1[2]] # 3_0
Kasus 3 - menentukan nilai j [baris], dan nilai k [kolom], menggunakan irisan penuh [. ] untuk nilai i [matriks]. Ini akan membuat baris dengan mengambil elemen yang sama dari setiap matriks. Dalam hal ini kita mengambil baris 1, kolom 2 dari setiap matriks
print[a1[0]] # 1 print[a1[2]] # 3_1
Memilih matriks dalam array 3D
Jika kami hanya menentukan indeks i, numpy akan mengembalikan matriks yang sesuai. Kami akan menyebut kasus ini 1. Dalam contoh ini kita akan meminta matriks 2
print[a1[0]] # 1 print[a1[2]] # 3_2
Kasus 2 jika kita hanya menentukan nilai j [menggunakan irisan penuh untuk nilai i], kita akan memperoleh matriks yang terbuat dari baris terpilih yang diambil dari setiap bidang. Dalam contoh ini kita akan mengambil baris 1
print[a1[0]] # 1 print[a1[2]] # 3_3
Kasus 3 jika kita menentukan nilai k saja [menggunakan irisan penuh untuk nilai i dan j], kita akan memperoleh matriks yang dibuat dari kolom terpilih yang diambil dari setiap bidang. Dalam contoh ini kita akan mengambil kolom 0
print[a1[0]] # 1 print[a1[2]] # 3_4
Mengiris array
Anda dapat mengiris array numpy adalah cara yang mirip dengan mengiris daftar - kecuali Anda dapat melakukannya di lebih dari satu dimensi
Seperti pengindeksan, array yang Anda dapatkan kembali saat Anda mengindeks atau mengiris array numpy adalah tampilan dari array asli. Ini adalah data yang sama, hanya diakses dalam urutan yang berbeda. Ini berbeda dengan daftar, di mana sebuah slice mengembalikan daftar yang benar-benar baru
Mengiris daftar - rekap
Hanya rekap singkat tentang cara mengiris bekerja dengan daftar Python normal. Misalkan kita memiliki daftar
print[a1[0]] # 1 print[a1[2]] # 3_5
Kita bisa menggunakan slicing untuk mengambil sub-list, seperti ini
print[a1[0]] # 1 print[a1[2]] # 3_6
Notasi irisan menentukan nilai awal dan akhir [mulai. akhir] dan menyalin daftar dari awal hingga tetapi tidak termasuk akhir
Kita dapat menghilangkan bagian awal, dalam hal ini potongan dimulai dari awal daftar. Kita dapat menghilangkan bagian akhir, sehingga potongan berlanjut ke bagian akhir daftar. Jika kita menghilangkan keduanya, potongan yang dibuat adalah salinan dari seluruh daftar
print[a1[0]] # 1 print[a1[2]] # 3_7
Satu hal terakhir yang perlu diperhatikan adalah perbedaan antara indeks dan potongan dengan panjang 1
print[a1[0]] # 1 print[a1[2]] # 3_8
Indeks mengembalikan elemen array, irisan mengembalikan daftar satu elemen
Mengiris array numpy 1D
Mengiris array numpy 1D hampir persis sama dengan mengiris daftar
print[a1[0]] # 1 print[a1[2]] # 3_9
Satu-satunya hal yang perlu diingat jika itu [tidak seperti daftar] a1 dan b keduanya melihat data dasar yang sama [b adalah tampilan data]. Jadi jika Anda mengubah elemen di b, a1 akan terpengaruh [dan sebaliknya]
import numpy as np a2 = np.array[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]0
Mengiris array 2D
Anda dapat mengiris larik 2D di kedua sumbu untuk mendapatkan subset persegi panjang dari larik asli. Sebagai contoh
import numpy as np a2 = np.array[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]1
Ini memilih baris 1. [1 ke ujung bawah array] dan kolom 2. 4 [kolom 2 dan 3], seperti yang ditunjukkan di sini
Mengiris array 3D
Anda dapat mengiris larik 3D di semua 3 sumbu untuk mendapatkan subset berbentuk kubus dari larik asli
import numpy as np a2 = np.array[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]2
Ini memilih
- pesawat. 2 [2 pesawat pertama]
- baris 1. [2 baris terakhir]
- kolom. 2 [2 kolom pertama]
Seperti yang ditunjukkan di sini
Irisan penuh
Anda tentu saja dapat menggunakan irisan penuh. untuk memilih semua bidang, kolom, atau baris. Namun, untuk indeks tambahan, cukup hilangkan hitungan indeks sebagai irisan penuh. Jadi untuk array 2D
import numpy as np a2 = np.array[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]_3
Untuk array 3D
import numpy as np a2 = np.array[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]_4
Irisan vs pengindeksan
Seperti yang kita lihat sebelumnya, Anda dapat menggunakan indeks untuk memilih kolom atau baris bidang tertentu. Di sini kita memilih baris 1, kolom 2. 4
import numpy as np a2 = np.array[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]5
Anda juga dapat menggunakan irisan dengan panjang 1 untuk melakukan hal serupa [irisan 1. 2 bukannya indeks 1]
import numpy as np a2 = np.array[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]6
Perhatikan perbedaan halus. Yang pertama membuat larik 1D, yang kedua membuat larik 2D dengan hanya satu baris
Jika menurut Anda artikel ini bermanfaat, Anda mungkin tertarik dengan buku Resep NumPy atau buku lain dari penulis yang sama