私はこれらのスレッドを通過しました:
そして、それらはすべて、一意の行と列を持つ行列を計算するためのいくつかの方法について説明しています.
ただし、少なくとも訓練を受けていない目には、ソリューションは少し複雑に見えます。たとえば、最初のスレッドのトップ ソリューションを次に示します (間違っている場合は修正してください)。これが最も安全で最速だと思います。
np.unique(a.view(np.dtype((np.void, a.dtype.itemsize*a.shape[1])))).view(a.dtype).reshape(-1,
a.shape[1])
いずれにせよ、上記のソリューションは一意の行のマトリックスのみを返します。私が探しているのは、元の機能に沿ったものですnp.unique
u, indices = np.unique(a, return_inverse=True)
これは、一意のエントリのリストだけでなく、見つかった一意の各エントリへの各アイテムのメンバーシップも返しますが、列に対してこれを行うにはどうすればよいですか?
これが私が探しているものの例です:
array([[0, 2, 0, 2, 2, 0, 2, 1, 1, 2],
[0, 1, 0, 1, 1, 1, 2, 2, 2, 2]])
次のようになります。
u = array([0,1,2,3,4])
indices = array([0,1,0,1,1,3,4,4,3])
の異なる値はu
、元の配列の一意の列のセットを表します。
0 -> [0,0]
1 -> [2,1]
2 -> [0,1]
3 -> [2,2]
4 -> [1,2]