1

pyfitsOBJNO(オブジェクト番号)列で2つのデータオブジェクトを一致させようとしています。IDLでは、これはmatch, A.objno, B.objno, ii, jjプロシージャを使用して実行されます。iiこれにより、2つのインデックスと、jjどのインデックスAなどBが返されますA[ii].objno == B[ii].objno

これを行うためのnumpy/pythonicの方法はありますか?Aどちらの順序やサイズについても、またはBそれらが大きなフィットのテーブルである可能性があるため、私は何の規定もしたくありません。これは私が今していることです:

ii = np.in1d(A.OBJNO, B.OBJNO).nonzero()[0]
jj = [np.where(B.OBJNO == objno)[0][0] for objno in A[ii].field('OBJNO')]

より良いnumpy配列マッチングアルゴリズムはありますか?

4

1 に答える 1

0

配列のサイズNM( N > M) を表すと、解は O(N*M) になります。

配列が十分に大きいと仮定すると、O(N*logN) ソリューションの方が適しています。最初に大きい方の配列を並べ替え (call is A)、次にinbisectの各要素のバイナリ検索 (たとえば を使用) を実行することで、これを実現できます。Bsorted_A

于 2013-03-16T20:47:53.363 に答える