>  기사  >  백엔드 개발  >  두 개의 인덱스 목록을 사용하여 2D NumPy 배열을 인덱싱하려면 어떻게 해야 하며, 브로드캐스팅 문제에 대한 해결책은 무엇입니까?

두 개의 인덱스 목록을 사용하여 2D NumPy 배열을 인덱싱하려면 어떻게 해야 하며, 브로드캐스팅 문제에 대한 해결책은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-26 15:06:02746검색

How can I index a 2D NumPy array using two lists of indices, and what are the solutions to broadcasting issues?

2개의 인덱스 목록으로 2D Numpy 배열 인덱싱

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.