当前位置: 首页 > 面试题库 >

删除NumPy数组中具有重复项的行

东方弘壮
2023-03-14
问题内容

我有一个(N,3)numpy值数组:

>>> vals = numpy.array([[1,2,3],[4,5,6],[7,8,7],[0,4,5],[2,2,1],[0,0,0],[5,4,3]])
>>> vals
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 7],
       [0, 4, 5],
       [2, 2, 1],
       [0, 0, 0],
       [5, 4, 3]])

我想从数组中删除具有重复值的行。例如,上述数组的结果应为:

>>> duplicates_removed
array([[1, 2, 3],
       [4, 5, 6],
       [0, 4, 5],
       [5, 4, 3]])

我不确定如何使用numpy有效地做到这一点而无需循环(数组可能会很大)。有人知道我该怎么做吗?


问题答案:

这是一个选择:

import numpy
vals = numpy.array([[1,2,3],[4,5,6],[7,8,7],[0,4,5],[2,2,1],[0,0,0],[5,4,3]])
a = (vals[:,0] == vals[:,1]) | (vals[:,1] == vals[:,2]) | (vals[:,0] == vals[:,2])
vals = numpy.delete(vals, numpy.where(a), axis=0)


 类似资料:
  • 问题内容: 我想删除彼此跟随的重复项,但不要删除整个数组中的重复项。另外,我想保持顺序不变。 所以如果输入是输出 我找到了一种使用方法,但我正在寻找更快的NumPy解决方案。 问题答案: 一般的想法是用来查找数组中两个连续元素之间的差异。然后我们只索引那些给出差异元素的索引。但由于长度 是1那么短的索引之前,我们需要对涉及diff阵列的开始。 说明:

  • 问题内容: 如何删除二维数组的重复行? 答案应该如下: 如果有两行相同,那么我想删除一个“重复”行。 问题答案: 您可以使用。由于您需要唯一的行,因此我们需要将它们放入元组: _只是应用到_阵列会导致这样的: 打印出列表中的唯一元素 。因此,将它们放入元组会导致: 打印: 更新 在新版本中,您需要设置

  • 我想删除double[]数组中的重复项。不幸的是,我不能使用ArrayList或其他任何东西,它必须是“普通”双数组。我试图使用类数组的binarySearch()方法,但找不到一个很好的解决方案,因为我不仅要搜索,还要删除重复项。那么,每次删除这样的副本时,我都必须缩短长度。 这个问题有什么解决办法吗?

  • 问题内容: 我使用下面的代码行遍历数据库中的一个表: 如果我打印出数组: 我会得到这个: 但是我想摆脱数组中的重复项,所以我使用 我得到下面的奇怪结果,这不是我想要的结果: 理想情况下,我认为它应该返回以下内容: 我该怎么做才能正确处理?我使用了错误的PHP语法/默认功能吗? 问题答案: 该功能将为您完成此操作。您只需要添加标志:

  • 问题内容: 我正在使用2D形状数组存储经度和纬度对。一方面,我必须合并两个2D数组,然后删除所有重复的条目。我一直在寻找类似于numpy.unique的函数,但是我没有运气。我一直在考虑的任何实现都看起来“没有优化”。例如,我正在尝试将数组转换为元组列表,使用set删除重复项,然后再次转换为数组: 是否有任何现有的解决方案,所以我不会重新发明轮子吗? 为了清楚起见,我在寻找: 顺便说一句,我只想使

  • 问题内容: 我应该读一个包含许多不同电子邮件地址的文件,并使用数组将它们打印出来。问题是我需要消除重复的电子邮件。 我能够尝试/捕捉并打印出电子邮件地址。但是,我不确定如何删除重复项。我对散列码或如何使用Set尚不了解。任何援助将不胜感激。 这是我到目前为止的内容: 问题答案: 简单的解决方案是使用Set Java, 因此设置自动删除重复值 并且在你的代码中你拥有数组,而不是将转换数组直接使用代码