NumPy에는 두 개의 인덱스 목록을 사용하여 2D 배열을 인덱싱하는 다양한 방법이 있습니다. 인덱스 목록(행에 대해 하나, 열에 대해 하나). 이러한 방법을 살펴보고 브로드캐스트 문제를 해결해 보겠습니다.
두 개의 인덱싱 배열 row_indices 및 col_indices를 사용하여 2D 배열 x를 인덱싱하려면 다음을 사용하면 됩니다. 다음 구문:
<code class="python">x_indexed = x[row_indices, col_indices]</code>
그러나 row_indices 및 col_indices의 모양이 브로드캐스트에 호환되지 않으면 브로드캐스팅 오류가 발생할 수 있습니다. 이를 극복하기 위해 np.ix를 사용하여 브로드캐스팅을 처리할 수 있습니다.
<code class="python">x_indexed = x[np.ix_(row_indices, col_indices)]</code>
행 및 열 선택에 부울 마스크를 사용할 수도 있습니다. 두 개의 부울 마스크(row_mask 및 col_mask)를 생성합니다. 여기서 True는 선택할 요소를 나타냅니다.
그런 다음 다음 구문을 사용할 수 있습니다.
<code class="python">x_indexed = x[row_mask, col_mask]</code>
x, row_indices 및 col_indices:
<code class="python">x = np.random.randint(0, 10, size=(5, 8)) row_indices = [2, 1, 4] col_indices = [3, 7] # Using broadcasting with indexing arrays x_indexed_broadcasting = x[np.ix_(row_indices, col_indices)] # Using boolean masks row_mask = np.array([False] * 5, dtype=bool) row_mask[[2, 1, 4]] = True col_mask = np.array([False] * 8, dtype=bool) col_mask[[3, 7]] = True x_indexed_masks = x[row_mask, col_mask] print(x_indexed_broadcasting) print(x_indexed_masks)</code>
두 접근 방식 모두 동일한 결과를 산출합니다.
[[4 7] [7 7] [2 1]]
위 내용은 두 개의 인덱스 목록을 사용하여 2D NumPy 배열을 인덱싱하려면 어떻게 해야 하며, 브로드캐스팅 문제에 대한 해결책은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!