私はN
のコレクションを3次元で持っています。これらは(N,3)
の形のnp.array
として保存されます。すべての点は、任意の2点間の最小距離が~1e-5
であり、別個である。私はnp.array
の現在の注文とは独立しており、個々のコンポーネントの小さな摂動に対して堅牢であるこれらのポイントを反復するための注文を得る手段を探しています。NumPy:ファジー/耐性比較付きのnp.lexsort
最初の要件を満たす最も簡単な手段は
np.lexsort(my_array.T)
とnp.lexsort
であるが、これは堅牢性部門で失敗します。私たちは、このインスタンスでは順序が非常にあることがわかります
In [6]: my_array = np.array([[-0.5, 0, 2**0.5], [0.5, 0, 2**0.5 - 1e-15]])
In [7]: my_array[np.lexsort(my_array.T)]
Out[7]:
array([[ 0.5 , 0. , 1.41421356],
[-0.5 , 0. , 1.41421356]])
を摂動に敏感です。私はnp.lexsort
のファジィ変種を探しています。これは、ある軸の2つの値がepsilon
の許容値内にある場合、次の軸に移動します。 (あるいは私が注文を得ることを可能にする任意の代替メカニズム)
私のアプリケーションは、これらのコレクションのすべてが注文を必要とするものであり、パフォーマンスは何かが懸念されています最初にそれを行うよりよい方法があるかどうかを見ずに、自分の寛容なnp.lexsortを動かす)。
まず、複素数を実数部と虚数部でソートする必要がありますが、実数部ソートでは許容範囲内であれば等価と見なしてください。あなたは解決策を見つけましたか?私が以前にやっていたことは、lexsortを使って最初にソートしてから、バブルソートのようなアルゴリズムを使って反復して、間違った順序で値をグループ化することでした。 – endolith