Mengakses Tatasusunan Berbilang Dimensi dengan Kurang Dimensi
Pertimbangkan tatasusunan n-dimensi, seperti a, dan (n-1)-dimensi tatasusunan, idx. Untuk mengakses menggunakan idx di sepanjang dimensi tertentu, kita boleh menggunakan pengindeksan lanjutan.
Untuk tatasusunan 3 dimensi a, kita boleh mengira nilai maksimum sepanjang dimensi pertama menggunakan idx seperti berikut:
<code class="python">m, n = a.shape[1:] I, J = np.ogrid[:m, :n] a_max_values = a[idx, I, J]</code>
Pendekatan ini boleh digeneralisasikan untuk tatasusunan dengan sebarang bilangan dimensi:
<code class="python">def argmax_to_max(arr, argmax, axis): new_shape = list(arr.shape) del new_shape[axis] grid = np.ogrid[tuple(map(slice, new_shape))] grid.insert(axis, argmax) return arr[tuple(grid)]</code>
Untuk mengindeks tatasusunan n-dimensi dengan tatasusunan (n-1)-dimensi, kita boleh mencipta grid bagi indeks untuk semua paksi:
<code class="python">def all_idx(idx, axis): grid = np.ogrid[tuple(map(slice, idx.shape))] grid.insert(axis, idx) return tuple(grid)</code>
Menggunakan grid ini, kita boleh mengindeks ke dalam tatasusunan input:
<code class="python">a_max_values = a[all_idx(idx, axis=axis)] b_max_values = b[all_idx(idx, axis=axis)]</code>
Pendekatan ini menyediakan penyelesaian yang elegan untuk mengakses tatasusunan berbilang dimensi dengan dimensi yang lebih sedikit.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Tatasusunan Berbilang Dimensi dengan Dimensi Lebih Sedikit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!