2 つのインデックスのリストを使用して 2D NumPy 配列に効率的にインデックスを付けるにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-27 04:54:02
オリジナル
321 人が閲覧しました

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

2 つのインデックス リストを使用した 2D NumPy 配列のインデックス付け

目的は、提供された 2 つのインデックス リスト (行用と行用) を使用して 2D NumPy 配列のインデックス付けを実行することです。 1 つは列用です。望ましい結果は、指定されたインデックスに基づいて配列のサブセットを効率的に取得することです。

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>
ログイン後にコピー
次の配列とインデックスのリストを考えてみましょう:

<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>
ログイン後にコピー
np.ix_ を使用すると、x にインデックスを付けることができます:

これにより、指定されたインデックスに基づいて選択された行と列を含む配列の目的のサブセットが得られます。

以上が2 つのインデックスのリストを使用して 2D NumPy 配列に効率的にインデックスを付けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!