擅长:python、mysql、java
<p>可以按行按字典顺序对数组排序,并查找行更改的点:</p>
<pre><code>In [1]: a = array([[0, 0, 1], [1, 1, 1], [1, 1, 1], [1, 0, 1]])
In [2]: b = a[lexsort(a.T)]
In [3]: b
Out[3]:
array([[0, 0, 1],
[1, 0, 1],
[1, 1, 1],
[1, 1, 1]])
...
In [5]: (b[1:] - b[:-1]).any(-1)
Out[5]: array([ True, True, False], dtype=bool)
</code></pre>
<p>最后一个数组表示前三行不同,第三行重复两次。</p>
<p>对于1和0数组,可以对值进行编码:</p>
<pre><code>In [6]: bincount(dot(a, array([4,2,1])))
Out[6]: array([0, 1, 0, 0, 0, 1, 0, 2])
</code></pre>
<p>也可以使用字典。哪种方法最快取决于实际使用的数组的类型。</p>