我经历了这些线程:
他们都讨论了几种计算具有唯一行和列的矩阵的方法。
然而,这些解决方案看起来有点令人费解,至少在未经训练的人看来是这样。例如,这是第一个线程的最佳解决方案,(如果我错了,请纠正我)我相信这是最安全和最快的:
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]