더 적은 차원으로 다차원 배열에 액세스
a 및 (n-1)차원과 같은 n차원 배열을 고려합니다. 배열, idx. 주어진 차원에서 idx를 사용하여 액세스하려면 고급 인덱싱을 사용할 수 있습니다.
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차원 배열을 (n-1)차원 배열로 인덱싱하려면 다음과 같은 그리드를 생성할 수 있습니다. 모든 축에 대한 인덱스:
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!