ホームページ >バックエンド開発 >Python チュートリアル >「np.ix_」を使用して 2 つのインデックスのリストを持つ 2D NumPy 配列にインデックスを付ける方法

「np.ix_」を使用して 2 つのインデックスのリストを持つ 2D NumPy 配列にインデックスを付ける方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 08:27:301000ブラウズ

How to Index a 2D NumPy Array with Two Lists of Indices Using `np.ix_`?

2 つのインデックスのリストを使用して 2D Numpy 配列にインデックスを付ける

問題ステートメント

2D Numpy 配列にインデックスを付ける2 つの別々のインデックスのリストは、1 つのインデックスのリストを使用するほど単純ではありません。目的のインデックス付き選択を実現するには配列のブロードキャストと再形成が必要になるため、大規模な配列を扱う場合は困難になる可能性があります。

np.ix_ とブロードキャストを使用した解決策

Numpy の np.ix_ 関数を使用すると、相互にブロードキャストして目的のインデックス付けパターンを実現できるインデックス付け配列のタプルを作成できます。このアプローチにより、可読性が維持され、コードの最適化が促進されます。

np.ix_ を使用してインデックス付けを実行するには、次の手順に従います。

  1. 行インデックスと列インデックスを持つ np.ix_ を使用して 2 つのブロードキャスト配列を作成します。 .
  2. これらのインデックス配列を使用して、元の配列内の目的の行と列を選択します。

コード例

以下コードは、インデックスベースの選択に np.ix_ を使用する方法を示しています:

<code class="python">import numpy as np

# Create indices
row_indices = [4, 2, 18, 16, 7, 19, 4]
col_indices = [1, 2]

# Create broadcasting arrays
index_tuples = np.ix_(row_indices, col_indices)

# Perform indexing
x_indexed = x[index_tuples]</code>

出力例

>>> x_indexed
array([[76, 56],
       [70, 47],
       [46, 95],
       [76, 56],
       [92, 46]])

追加の考慮事項

代替構文:
np.ix_ を使用する代替構文は、特に指定がない限り、: 演算子を使用して軸に沿ったすべてのインデックスを指定することです。

ブロードキャスト:
ブロードキャストは入力配列の軸に沿って発生することに注意することが重要です。したがって、各軸に沿ったインデックス配列のサイズは、入力配列の対応する次元と一致する必要があります。

最適化:
np.ix_ とブロードキャストを使用したインデックス作成により、パフォーマンスが大幅に向上します。インデックスの反復処理やブール マスクの使用と比較します。これは、大規模な配列を操作する場合に特に有利です。

以上が「np.ix_」を使用して 2 つのインデックスのリストを持つ 2D NumPy 配列にインデックスを付ける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。