Bentuk lain untuk Indeks dengan Python
Saya mengikuti kursus Pembelajaran Mesin, dan dalam tinjauan pustaka numpy, metode pengindeksan digunakan yang belum pernah saya lihat sebelumnya. Kami mendefinisikan a = np.array([[1,2],[3,4],[5,6]]). Dua array baru kemudian dibuat: np.array([a[0,0], a[1,1], a[2,1]]. Ini cara pengindeksan yang saya tahu. Cara pengindeksan yang saya tidak tahu adalah ini: print(a[[0,1,2],[0,1,1]]). Bisakah seseorang membantu saya dengan penjelasan tentang bentuk pengindeksan terbaru ini?
Jawaban
Ketika narray dilewatkan, di mana njumlah dimensi array, mereka digunakan sebagai indeks untuk dimensi yang sesuai. a[[0,1,2],[0,1,1]]setara dengan[a[0,0], a[1,1], a[2,1]]
Izinkan saya mengutip dokumen numpy :
... Dari setiap baris, elemen tertentu harus dipilih. Indeks baris hanya [0, 1, 2] dan indeks kolom menentukan elemen yang akan dipilih untuk baris yang sesuai, di sini [0, 1, 0]. Menggunakan keduanya bersama-sama, tugas dapat diselesaikan menggunakan pengindeksan lanjutan:
x = np.array([[1, 2], [3, 4], [5, 6]])
x[[0, 1, 2], [0, 1, 0]]
array([1, 4, 5])
Ini memanggil pengindeksan array integer . Dalam contoh Anda, Anda mengakses [[0,1,2],[0,1,1]]indeks dari array 1x3, yang disebut a. Artinya, Anda mendapatkan dari a:
[
the first element of the first array,contained in this 1x3 array,
the second element of the second array, contained in this big array,
the second element of the third array, contained in the same array
]
Mencetak, Anda akan mendapatkan output dari [1 4 6], karena mereka adalah unsur-unsur dalam posisi yang ditentukan ( (0,0), (1,1), (2,1)). Anda dapat memvisualisasikannya seperti skema kolom dan baris :
[[rows],[colums]] # vertically speaking
Anda memilih baris item yang Anda inginkan di sub-larik pertama , dan kolom di sub-larik kedua.