我试图找到一种如何通过仅采用第一列中唯一的元素从多维数组创建新数组的方法,例如,如果我有一个数组
[[1,2,3],
[1,2,3],
[5,2,3]]
手术后我想得到这个输出
[[1,2,3],
[5,2,3]]
显然,第二列和第三列不需要是唯一的。
由于
答案 0 :(得分:4)
由于您希望保留第一列唯一性的第一行,您可以使用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]])
答案 1 :(得分: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]]