gpt4 book ai didi

python - 如何过滤数组以仅保留其重复元素?

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:52 24 4
gpt4 key购买 nike

我有一个 NumPy 数组。我想从中创建一个仅包含重复元素的新元素。例如,之前的数组可能看起来像

[[  3.   0.   1.   0.  12.   1.]
[ 14. 0. 2. 2. 0. 3.]
[ 3. 0. 1. 2. 0. 3.]
[ 12. 0. 14. 0. 12. 1.]
[ 14. 0. 2. 12. 0. 14.]
[ 15. 4. 13. 13. 14. 15.]
[ 14. 2. 15. 13. 14. 15.]]

手术后我希望它看起来像

[[ 1.   0.  ]
[ 0. 2. ]
[ 3. 0. ]
[ 12. 0. ]
[ 14. 0. ]
[ 15. 13. ]
[ 14. 15. ]]

现在,我会使用 for 循环来完成此操作,但也许你们中的某个人知道更流畅、更快的方法。

最佳答案

您无法在单个 numpy 步骤中完成此操作,因为重复项的长度可能会因行而异。

我建议您执行以下操作。

定义一个函数来查找重复项:

def dups(a):
uniques, counts = np.unique(a, return_counts=True)
return uniques[np.where(counts > 1)]

然后将其应用到数组的每一行:

ans = [dups(row) for row in arr]

对于所有行具有相同数量的重复项的情况,您可以使用 ans 创建一个 numpy 数组:

ans = np.stack(ans)

对于您的示例案例,它打印:

[[  0.   1.]
[ 0. 2.]
[ 0. 3.]
[ 0. 12.]
[ 0. 14.]
[ 13. 15.]
[ 14. 15.]]

关于python - 如何过滤数组以仅保留其重复元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47957305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com