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

查找数组中重复元素的索引(Python,NumPy)

庾君博
2023-03-14
问题内容

假设我有一个整数的NumPy数组,如下所示:

[34,2,3,22,22,22,22,22,22,18,90,5,-55,-19,22,6,6,6,6,6,6,6,6,23,53,1,5,-42,82]

我想找到数组的开始和结束索引,其中值的值大于重复的x倍(例如5倍)。因此,在上述情况下,其值为22和6。重复的22的开始索引为3,结束的索引为8。重复6相同。Python中是否有特殊的工具对您有所帮助?否则,我将遍历数组索引以获取索引,并将实际值与前一个进行比较。

问候。


问题答案:

使用@WarrenWeckesser在此处np.diff给出的和方法来查找数组中的零游程:

import numpy as np

def zero_runs(a):  # from link
    iszero = np.concatenate(([0], np.equal(a, 0).view(np.int8), [0]))
    absdiff = np.abs(np.diff(iszero))
    ranges = np.where(absdiff == 1)[0].reshape(-1, 2)
    return ranges

a = [34,2,3,22,22,22,22,22,22,18,90,5,-55,-19,22,6,6,6,6,6,6,6,6,23,53,1,5,-42,82]

zero_runs(np.diff(a))
Out[87]: 
array([[ 3,  8],
       [15, 22]], dtype=int32)

然后可以根据运行开始和结束之间的差异来过滤:

runs = zero_runs(np.diff(a))

runs[runs[:, 1]-runs[:, 0]>5]  # runs of 7 or more, to illustrate filter
Out[96]: array([[15, 22]], dtype=int32)


 类似资料:
  • 问题内容: 我有一个看起来像这样的表: 还有其他几列与此问题无关。将它们存储为JSON是有原因的。 我要尝试的是查找具有特定 艺术家姓名 (精确匹配)的曲目。 我正在使用此查询: 例如 但是,这会进行全表扫描,而且速度不是很快。我尝试使用function创建一个GIN索引,并使用,但是未使用该索引,查询实际上要慢得多。 问题答案: 在Postgres 9.4+ 使用新的二进制JSON数据类型 ,P

  • 问题内容: 我被困在以下程序中: 我有一个输入整数数组,其中只有一个非重复数,例如{1,1,3,2,3}。输出应显示非重复元素,即2。 到目前为止,我执行了以下操作: 最好限制阵列中的解决方案。避免使用集合,地图。 问题答案: 由于几乎可以肯定这是一种学习练习,并且由于您非常接近正确完成它,因此需要进行以下更改才能使其正常工作: 将声明 __移到 外部循环 内部 -需要将标志设置为外部循环的每次迭

  • 我有以下字符串: 对于数组中的每个D,我是否可以知道在每个D之前和之后有多少个连续的T或D与每个D之前的字母相同。所以对于第一个D,它前面的字母是T,那么我想知道在第一个D之前和之后有多少个连续的T。对于第二个D,它前面的字母是Q,所以我想找出第二个D之前和之后连续Q的#。 例如,对于第一个D,在D之前有1个T,在出现Q之前有1个T(例如:对于第一个D,类似于“TDT”) 对于第二个D,有一个连续

  • 问题内容: 老实说,这个问题很简单。有没有一种方法可以快速查找数组中某个元素的所有出现而无需循环遍历它?似乎所有内置方法仅返回第一次出现的索引,而不是全部返回。 拥有返回索引数组的样式方法将是很不错的。有什么想法吗? 预先感谢您的任何投入! 编辑: 感谢大家的回复!看来我应该对此更加清楚。我目前的操作方式是扩展,其外观与下面发布的一个哑光非常相似。我知道,任何执行此操作的方法都必须在内部遍历数组,

  • 问题内容: 我有一个看起来像这样的表: 还有其他几列与此问题无关。将它们存储为JSON是有原因的。 我想做的是查找具有特定 艺术家姓名 (精确匹配)的曲目。 我正在使用此查询: 例如 但是,这会进行全表扫描,而且速度不是很快。我尝试使用function创建一个GIN索引,并使用,但是未使用该索引,查询实际上要慢得多。 问题答案: 在Postgres 9.4+ 使用新的二进制JSON数据类型 ,Po

  • 我有一张这样的桌子: 还有其他几个专栏与这个问题无关。将它们存储为JSON是有原因的。 我想做的是查找一首具有特定艺术家名称(精确匹配)的曲目。 我正在使用此查询: 举个例子 但是,这会进行全表扫描,而且速度不是很快。我尝试使用函数创建GIN索引,并使用,但是没有使用索引并且查询实际上显着变慢。