如何通过多维数组的第一列搜索唯一元素

3

我希望您能够帮助我翻译一些与IT技术相关的内容。以下是需要翻译的文本:

我正在尝试找到一种从多维数组中创建新数组的方法,只取第一列中唯一的元素,例如,如果我有一个数组:

[[1,2,3],
[1,2,3],
[5,2,3]]

操作完成后,我希望获得以下输出结果:

[[1,2,3],
[5,2,3]]

显然,第二列和第三列不需要唯一。谢谢。

如果你有[[1,4,3], [1,2,3],[5,2,3]],会怎么样呢? - Padraic Cunningham
2个回答

6

由于您希望保持第一列的唯一性,您可以使用np.unique函数,并使用其可选的return_index参数,该参数将为您提供在A[:,0]元素上的唯一性中出现的第一个索引(因此满足第一行标准)。其中A是输入数组。因此,我们可以得到一个向量化的解决方案,如下所示 -

_,idx = np.unique(A[:,0],return_index=True)
out = A[idx]

示例运行 -

In [16]: A
Out[16]: 
array([[1, 2, 3],
       [5, 2, 3],
       [1, 4, 3]])

In [17]: _,idx = np.unique(A[:,0],return_index=True)
    ...: out = A[idx]
    ...: 

In [18]: out
Out[18]: 
array([[1, 2, 3],
       [5, 2, 3]])

0
main = [[1, 2, 3], [1, 3, 4], [2, 4, 5], [3, 6, 5]]
used = []
new = [[sub, used.append(sub[0])][0] for sub in main if sub[0] not in used]
print(new)
# Output: [[1, 2, 3], [2, 3, 4], [3, 6, 5]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接