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

删除NumPy数组中的连续重复项

丰飞龙
2023-03-14
问题内容

我想删除彼此跟随的重复项,但不要删除整个数组中的重复项。另外,我想保持顺序不变。

所以如果输入是[0 0 1 3 2 2 3 3]输出[0 1 3 2 3]

我找到了一种使用方法,itertools.groupby()但我正在寻找更快的NumPy解决方案。


问题答案:
a[np.insert(np.diff(a).astype(np.bool), 0, True)]
Out[99]: array([0, 1, 3, 2, 3])

一般的想法是用来diff查找数组中两个连续元素之间的差异。然后我们只索引那些给出non-zero差异元素的索引。但由于长度
diff是1那么短的索引之前,我们需要insertTrue涉及diff阵列的开始。

说明:

In [100]: a
Out[100]: array([0, 0, 1, 3, 2, 2, 3, 3])

In [101]: diff = np.diff(a).astype(np.bool)

In [102]: diff
Out[102]: array([False,  True,  True,  True, False,  True, False], dtype=bool)

In [103]: idx = np.insert(diff, 0, True)

In [104]: idx
Out[104]: array([ True, False,  True,  True,  True, False,  True, False], dtype=bool)

In [105]: a[idx]
Out[105]: array([0, 1, 3, 2, 3])


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

  • 问题内容: 在numpy数组中找到最大连续重复nan的最佳方法是什么? 例子: 输入1: 输出1: 输入2: 输出2: 问题答案: 这是一种方法- 这是一个改进的版本- 基准测试-

  • 问题内容: 我有一个numpy值数组: 我想从数组中删除具有重复值的行。例如,上述数组的结果应为: 我不确定如何使用numpy有效地做到这一点而无需循环(数组可能会很大)。有人知道我该怎么做吗? 问题答案: 这是一个选择:

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

  • 问题内容: 我有一个可能看起来像这样的数组: ANOVAInputMatrixValuesArray = [[ 0.96488889, 0.73641667, 0.67521429, 0.592875, 0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]] 请注意,其中一行的结尾处为零。我想删除任何包含零的行,同时保留所有包含非

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