>  기사  >  백엔드 개발  >  두 개의 인덱스 목록을 사용하여 2D NumPy 배열을 효율적으로 인덱싱하는 방법은 무엇입니까?

두 개의 인덱스 목록을 사용하여 2D NumPy 배열을 효율적으로 인덱싱하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-27 04:54:02322검색

How to Efficiently Index a 2D NumPy Array Using Two Lists of Indices?

두 개의 인덱스 목록을 사용하여 2D NumPy 배열 인덱싱

목표는 제공된 두 개의 인덱스 목록(행 및 하나는 열용입니다. 원하는 결과는 지정된 인덱스를 기반으로 배열의 하위 집합을 효율적으로 얻는 것입니다.

np.ix_

활용

이를 달성하기 위해 다음을 활용할 수 있습니다. NumPy의 np.ix_ 함수. np.ix_는 브로드캐스팅에 사용할 수 있는 인덱싱 배열의 튜플을 생성합니다. 작동 방식은 다음과 같습니다.

인덱싱 배열 포함

선택:

<code class="python">x_indexed = x[np.ix_(row_indices, col_indices)]</code>

이렇게 하면 다음과 같은 튜플이 생성됩니다. row_indices 및 col_indices를 기반으로 배열 인덱싱. 이러한 배열을 브로드캐스팅하면 x에 대한 인덱스를 생성하고 원하는 하위 집합을 추출할 수 있습니다.

할당:

<code class="python">x[np.ix_(row_indices, col_indices)] = value</code>

이는 지정된 값을 x의 인덱스 위치에 할당합니다.

마스크 사용

선택:

<code class="python">row_mask = np.array([True, False, False, True, False], dtype=bool)
col_mask = np.array([False, True, True, False, False], dtype=bool)

x_indexed = x[np.ix_(row_mask, col_mask)]</code>

여기에서는 부울 마스크(row_mask 및 col_mask)를 사용합니다. 선택할 행과 열을 정의합니다.

할당:

<code class="python">x[np.ix_(row_mask, col_mask)] = value</code>

이것은 x의 마스크된 위치에 값을 할당합니다.

< h3>샘플 실행

다음 배열 및 인덱스 목록을 고려하세요.

<code class="python">x = np.random.random_integers(0, 5, (20, 8))

row_indices = [4, 2, 18, 16, 7, 19, 4]
col_indices = [1, 2]</code>

np.ix_를 사용하여 x에 대한 인덱스를 지정할 수 있습니다:

<code class="python">x_indexed = x[np.ix_(row_indices, col_indices)]

print(x_indexed)

# Output:
# [[76 56]
#  [70 47]
#  [46 95]
#  [76 56]
#  [92 46]]</code>

이렇게 하면 제공된 인덱스를 기반으로 선택된 행과 열이 있는 배열의 원하는 하위 집합이 제공됩니다.

위 내용은 두 개의 인덱스 목록을 사용하여 2D NumPy 배열을 효율적으로 인덱싱하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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