gpt4 book ai didi

python - 如何计算数组中相邻的重复元素?

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:08 26 4
gpt4 key购买 nike

我有一个由 0 和 1 组成的数组

[0,0,1,1,1,0,0,0,0,1,1,0,0]

我想定义一个函数,它将此数组作为输入并输出一个长度相同的数组,其中包含第一个 1 出现的索引中相邻 1 的计数(否则为 0)。所以输出将是

[0,0,3,0,0,0,0,0,0,2,0,0,0]

因为 1 连续 3 次出现在第 2 个索引中,而 1 连续 2 次出现在第 9 个索引中。

有没有办法使用 numpy 来做到这一点?如果没有,是否有一些(有效的)pythonic 方法来做到这一点?

最佳答案

这是一个使用纯向量化操作且没有列表迭代的解决方案:

import numpy as np

data = np.array([0,0,1,1,1,0,0,0,0,1,1,0,0])
output = np.zeros_like(data)

where = np.where(np.diff(data))[0]
vals = where[1::2] - where[::2]
idx = where[::2] + 1

output[idx] = vals
output
# array([0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0])

关于python - 如何计算数组中相邻的重复元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54075740/

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