Bagaimana untuk Mengakses Tatasusunan Berbilang Dimensi dengan Dimensi Lebih Sedikit?

Linda Hamilton
Lepaskan: 2024-10-21 11:32:02
asal
831 orang telah melayarinya

How to Access Multidimensional Arrays with Fewer Dimensions?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!