ある Numpy 配列を別の Numpy 配列でインデックスするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-12 02:24:01
オリジナル
604 人が閲覧しました

How to Index One Numpy Array by Another?

Numpy で 1 つの配列を別の配列でインデックス付けする

2 つの行列、AB を考えます。ここで、A には任意の値が含まれ、B には A 内の要素のインデックスが保持されます。このタスクは、B で指定されたインデックスに基づいて A から要素を抽出することです。このインデックス作成により、選択的な要素の取得が可能になります。

高度なインデックス作成を使用したソリューション:

Numpy の高度なインデックス作成により、次の式を使用してこの操作が可能になります:

A[np.arange(A.shape[0])[:,None], B]
ログイン後にコピー

このアプローチでは、B から取得した行インデックスと列インデックスの組み合わせを利用して、A の要素を取得します。

線形インデックスを使用したソリューション:

別のアプローチには、線形インデックス付けが含まれます。

m, n = A.shape
out = np.take(A, B + n*np.arange(m)[:,None])
ログイン後にコピー

ここで、mnA の次元を表します。 np.take() 関数内の操作により、B.

例:

これらのソリューションを例で説明しましょう:

import numpy as np

A = np.array([[2, 4, 5, 3],
              [1, 6, 8, 9],
              [8, 7, 0, 2]])

B = np.array([[0, 0, 1, 2],
              [0, 3, 2, 1],
              [3, 2, 1, 0]])

# Advanced indexing
result1 = A[np.arange(A.shape[0])[:,None], B]

# Linear indexing
m, n = A.shape
result2 = np.take(A, B + n*np.arange(m)[:,None])

print("Result using advanced indexing:")
print(result1)

print("Result using linear indexing:")
print(result2)
ログイン後にコピー
出力:

以上がある Numpy 配列を別の Numpy 配列でインデックスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート