ホームページ >バックエンド開発 >Python チュートリアル >ある NumPy 配列を別の NumPy 配列でインデックスする方法: 高度なインデックス作成と線形インデックス作成?

ある NumPy 配列を別の NumPy 配列でインデックスする方法: 高度なインデックス作成と線形インデックス作成?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-10 13:23:03452ブラウズ

How to Index One NumPy Array by Another: Advanced Indexing vs. Linear Indexing?

NumPy での配列間のインデックス付け

科学技術計算では、多次元配列の操作が一般的なタスクです。 NumPy の高度なインデックス機能は、複雑なインデックス操作のための強力なツールを提供し、別の配列に格納されているインデックス値に基づいて配列からデータを簡単に抽出できるようにします。

任意の値を含む行列 A を考えてみましょう。 A の要素のインデックスを含む行列 B。タスクは、B が指す A から値を選択し、行列 C を生成することです。

これを達成する 1 つのアプローチは、NumPy を使用することです。高度なインデックス作成:

C = A[np.arange(A.shape[0])[:, None], B]
  • np.arange(A.shape[0])[:, None]: A、各列は同じ行インデックスを表します。
  • [:, None]: 配列を、B.
  • このアプローチは、ループを必要とせずに大規模な配列で効率的に動作します。

線形インデックス付けは、この操作に別の方法を提供します。

m, n = A.shape
C = np.take(A, B + n * np.arange(m)[:, None])
    m, n = A.shape:
  • A の寸法を保存します。
  • B n * np.arange(m)[:, None] :
  • B のインデックスと行番号に基づいて、C の各要素のフラット化インデックスを計算します。
  • np.take(A , ...):
  • フラット化されたインデックスを使用して A から要素を抽出します。
  • 高度なインデックス付けと線形インデックス付けの両方が、NumPy で 1 つの配列を別の配列にインデックス付けする効率的な方法を提供します。 .

以上がある NumPy 配列を別の NumPy 配列でインデックスする方法: 高度なインデックス作成と線形インデックス作成?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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