【发布时间】:2018-04-23 01:58:18
【问题描述】:
我希望我可以使用 np.where 或一些等效(且高效)的 numpy 函数构造以下算法:
def generate_signal(r):
signal = np.zeros(len(r), dtype=int)
lastSignal = 0
for i in range(len(r)):
if r[i] <= 30:
lastSignal = 1
elif r[i] >= 60:
lastSignal = 0
signal[i] = lastSignal
return signal
这是一个输入/输出的例子:
r = np.array([50, 52, 59, 69, 47, 33, 27, 26, 20, 30, 33, 35, 58, 55, 48, 60, 68, 55, 43, 49, 33, 30, 22, 28])
s = generate_signal(r)
print(s) # This is the result: [0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1]
print(list(zip(r, s))) # A zipped result (in case it helps): [(50, 0), (52, 0), (59, 0), (69, 0), (47, 0), (33, 0), (27, 1), (26, 1), (20, 1), (30, 1), (33, 1), (35, 1), (58, 1), (55, 1), (48, 1), (60, 0), (68, 0), (55, 0), (43, 0), (49, 0), (33, 0), (30, 1), (22, 1), (28, 1)]
【问题讨论】:
标签: python performance numpy vectorization where