gpt4 book ai didi

python - 从差值 != 2 的列表中返回值

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

我有一个列表,例如my_list = [1, 3, 5, 7, 14, 16, 18, 22, 28, 30, 32, 41, 43]

我想要一个函数,该函数将返回列表中该值与先前值之间的差值不等于 2 的所有值,例如该函数将为上述列表返回 [1, 14, 22, 28, 41]。请注意,my_list 的第一个值将始终显示为输出的第一个值。输入列表的长度为非零,最大为 100 的数量级。

到目前为止我有这个:

def get_output(array):
start = [array[0]]
for i in range(1, len(array)-1):
if (array[i] - array[i-1]) != 2:
start.append(array[i])

return start

请记住,我会将此函数应用于数千个输入数组,是否有速度更快的矢量化解决方案?

最佳答案

为避免使用效率低下的 np.concat,请使用 np.ediff1 而不是 np.diff,它需要一个 to_begin 要在结果前附加的参数:

>>> my_list = [1, 3, 5, 7, 14, 16, 18, 22, 28, 30, 32, 41, 43]
>>> arr = np.array(my_list)
>>> np.ediff1d(arr, to_begin=0)
array([0, 2, 2, 2, 7, 2, 2, 4, 6, 2, 2, 9, 2])

现在,使用 bool 索引:

>>> arr[np.ediff1d(arr, to_begin=0) != 2]
array([ 1, 14, 22, 28, 41])

关于python - 从差值 != 2 的列表中返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46170009/

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