gpt4 book ai didi

algorithm - 在 numpy 的条件函数之前是否有一个保持值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:26:38 25 4
gpt4 key购买 nike

例如:

pre_hold_list = [-2,0,0,-1,0,0,0,3,0,0]
hold_condition = lambda x:x != 0
output = np.hold(pre_hold_list, hold_condition)
[-2,-2,-2,-1,-1,-1,-1,3,3,3] #result of output

这里的条件是当前值不为零,函数将保持满足此条件的值直到下一个满足此条件的值(即它将保持 -2 然后 -1 然后 3)。

在 google 上搜索 np.hold() 或 np.step() 没有任何结果。

最佳答案

没关系,我编写了一个函数,它使用 cumsum 和 diff 的累积性质来执行此操作。如果有办法改善这一点,请告诉我。

def holdtil(x, condition):
condition_index = np.where(condition)[0]
condition_value = np.take(x, condition_index)
condition_value_diff = np.diff(condition_value)

holdtil_diff = np.zeros(len(x))
holdtil_diff[condition_index[0]] = condition_value[0]
holdtil_diff[condition_index[1:]] = condition_value_diff
return np.cumsum(holdtil_diff)

编辑:我在我的解决方案和@Willem Van Onsem 之间进行了性能检查,我的解决方案在时间上略有优势。

def hold_func():
start = time.time()
for i in range(1000):
x = np.random.randint(-5, 5, 1000)
hold(x, x != 0)
print(time.time() - start)

def holdtil_func():
start = time.time()
for i in range(1000):
x = np.random.randint(-5, 5, 1000)
holdtil(x, x != 0)
print(time.time() - start)

hold_func()
holdtil_func()

#0.055173397064208984
#0.045740604400634766

关于algorithm - 在 numpy 的条件函数之前是否有一个保持值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56894257/

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