以下の構造の3つのnumpy再配列があります。 最初の列はある位置(整数)で、2番目の列はスコア(浮動小数点数)です。1列の共通の値に基づいて2つ以上の2次元配列から交点を作成する
入力:
a = [[1, 5.41],
[2, 5.42],
[3, 12.32],
dtype=[('position', '<i4'), ('score', '<f4')])
]
b = [[3, 8.41],
[6, 7.42],
[4, 6.32],
dtype=[('position', '<i4'), ('score', '<f4')])
]
c = [[3, 7.41],
[7, 6.42],
[1, 5.32],
dtype=[('position', '<i4'), ('score', '<f4')])
]
すべての3列は、要素の同じ量を含有します。
私はこれら3つの2次元配列を位置列に基づいて1つの配列に結合する効率的な方法を探しています。
次のようになり、上記の例の出力arary:
出力:この位置は、すべての3入力に現れるので、位置3と
output = [[3, 12.32, 8.41, 7.41],
dtype=[('position', '<i4'), ('score1', '<f4'),('score2', '<f4'),('score3', '<f4')])]
行のみが出力配列でありますアレイ。
更新:私の素朴なアプローチは、手順を以下のようになります。
- 私の3つの入力配列の最初の列のベクトルを作成します。
- これらの3つのベクトルの交点を得るためにintersect1Dを使用します。
- 何とか3つの入力配列のベクトルのインデックスを取得します。
- 3つの入力配列からフィルタされた行を含む新しい配列を作成します。
アップデート2: 各位置の値は1つ、2つ、または3つのすべての入力アレイとすることができます。私の出力配列では、3つの入力配列すべてに現れる位置値の行だけを入れたいと思っています。
位置の値が異なると、配列の形状が正しくない場合はどうなりますか? – jterrace
わかっていれば分かりません。 Iは、3つの入力配列は常に同じ形状/構造を有することを保証することができる(N、1)と私の場合はいつも3つの入力配列を有します。出力配列は形状(X、4) –
でなければなりません。したがって、配列にはALLが入っていますか、またはNONEに値が入っていますか?つまり、値を含む2/3が得られないでしょうか?また、reprを表示するのではなく、配列を作成するために質問を編集できますか? – jterrace