与Matlab中的Unique函数等效的Python

时间:2019-04-26 07:49:27

标签: python matlab unique

我有一个整数(654 x 2)的矩阵,其中许多行的值只是同一列值的排列。 (例如,某行的值为[2,5],而另一行的值为[5,2])。我需要一个Python函数,将这两个行都视为唯一行,并帮助我删除排序后出现的行。

2 个答案:

答案 0 :(得分:1)

对子列表中的每个元素进行排序。

a = [[1,2], [3, 4], [2,1]]

#Sorted each element in sublist, I converted list to tuple to provide it as an input in set
li = [tuple(sorted(x)) for x in a]
print(li)
#[(1, 2), (3, 4), (1, 2)]

然后使用set消除重复项。

#Convert tuple back to list
unique_li = [list(t) for t in set(li)]
print(unique_li)
#[[1, 2], [3, 4]]

答案 1 :(得分:0)

您可以使用numpy对数组的行进行排序。

a = np.array([[1,2], [3, 4], [2,1]])
a
array([[1, 2],
       [3, 4],
       [2, 1]])

np.ndarray.sort(a)
a
array([[1, 2],
       [3, 4],
       [1, 2]])

使用aray_equal比较行是否相等:

np.array_equal(a[0], a[1])
False
np.array_equal(a[0], a[2])
True

然后使用以下命令删除行:

np.delete(a, 2, 0)
array([[1, 2],
       [3, 4]])