本质上,您希望np.unique返回唯一列的索引以及它们的使用位置的索引?通过转置矩阵,然后使用另一个问题的代码并添加,这很容易做到
return_inverse=True。
at = a.Tb = np.ascontiguousarray(at).view(np.dtype((np.void, at.dtype.itemsize * at.shape[1])))_, u, indices = np.unique(b, return_index=True, return_inverse=True)
使用
a,可以得到:
In [35]: uOut[35]: array([0, 5, 7, 1, 6])In [36]: indicesOut[36]: array([0, 3, 0, 3, 3, 1, 4, 2, 2, 4])
但是,我对您想
u成为的人并不完全清楚。如果希望它成为唯一列,则可以使用以下内容:
at = a.Tb = np.ascontiguousarray(at).view(np.dtype((np.void, at.dtype.itemsize * at.shape[1])))_, idx, indices = np.unique(b, return_index=True, return_inverse=True)u = a[:,idx]
这会给
In [41]: uOut[41]:array([[0, 0, 1, 2, 2], [0, 1, 2, 1, 2]])In [42]: indicesOut[42]: array([0, 3, 0, 3, 3, 1, 4, 2, 2, 4])



