gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:01:28 36 4
gpt4 key购买 nike

假设,我有一个 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 中是否有一个有用的特殊工具?否则,我将遍历索引数组索引并将实际值与前一个值进行比较。

问候。

最佳答案

使用np.diff 和给出的方法here @WarrenWeckesser 用于查找数组中零的运行:

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)

关于python - 查找数组中重复元素的索引(Python、NumPy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44790869/

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