訪問維度較少的多維數組
考慮一個 n 維數組,例如 a 和 (n-1) 維數組,idx。要沿著給定維度使用 idx 存取 a,我們可以採用高級索引。
對於3 維數組a,我們可以使用idx 計算沿著第一個維度的最大值,如下所示:
<code class="python">m, n = a.shape[1:] I, J = np.ogrid[:m, :n] a_max_values = a[idx, I, J]</code>
這種方法可以推廣到任意維數的數組:
<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>
要使用(n-1) 維數組索引n 維數組,我們可以建立一個網格所有軸的索引:
<code class="python">def all_idx(idx, axis): grid = np.ogrid[tuple(map(slice, idx.shape))] grid.insert(axis, idx) return tuple(grid)</code>
使用此網格,我們可以索引輸入數組:
<code class="python">a_max_values = a[all_idx(idx, axis=axis)] b_max_values = b[all_idx(idx, axis=axis)]</code>
這種方法為存取具有較少維度的多維數組提供了一種優雅的解決方案。
以上是如何存取維度較少的多維數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!