如何在Python中使用MATLAB中的唯一(a,'rows')?

Rod*_*rti 9 python matlab numpy

我正在将一些东西从MATLAB翻译成Python语言.

NumPy中有这个命令,唯一(a).但是由于MATLAB程序也运行'rows'命令,它给出了一些不同的东西.

在Python中是否有类似的命令,或者我应该制作一些做同样事情的算法?

JAB*_*JAB 5

假设你的2D数组以通常的C顺序存储(也就是说,每一行都被计为主数组中的数组或列表;换句话说,行主要顺序),或者你预先移植数组,你可以做点什么......

>>> import numpy as np
>>> a = np.array([[1, 2, 3], [2, 3, 4], [1, 2, 3], [3, 4, 5]])
>>> a
array([[1, 2, 3],
       [2, 3, 4],
       [1, 2, 3],
       [3, 4, 5]])
>>> np.array([np.array(x) for x in set(tuple(x) for x in a)]) # or "list(x) for x in set[...]"
array([[3, 4, 5],
       [2, 3, 4],
       [1, 2, 3]])
Run Code Online (Sandbox Code Playgroud)

当然,如果您需要原始顺序中的唯一行,这实际上并不起作用.


顺便说一句,要模拟类似的东西unique(a, 'columns'),你只需转置原始数组,执行上面显示的步骤,然后转置回来.