簡體   English   中英

Python 相當於 Matlab 中的 Unique 函數

[英]Python equivalent of Unique function in Matlab

我有一個 (654 x 2) 整數矩陣,其中許多行的值只是相同列值的排列。 (例如,某一行的值為 [2,5],而另一行的值為 [5,2])。 我需要一個 Python 函數,它將兩行都視為唯一行,並幫助我刪除排序后出現的行。

對子列表中的每個元素進行排序。

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]]

您可以使用 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]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM