我有一个如下所示的数据列表:
signal = [-1, -1, -1, 1, -1, 1, 1, -1, 1, -1, 1, 1]
其中-1表示卖出信号,1表示买入信号。 我现在想将此信号列表转换为如下所示:
signal = [-1, 0, 0, 1, -1, 1, 0, -1, 1, -1, 1, 0]
这基本上要求如果信号的方向没有从前一个信号改变(或者它已经是0),那么它应该是0.
我找不到任何类似的答案,所以感谢任何帮助。
答案 0 :(得分:2)
另一种基于列表理解的风格:
[j if i != j else 0 for i,j in zip([0] + signal, signal)]
#[-1, 0, 0, 1, -1, 1, 0, -1, 1, -1, 1, 0]
答案 1 :(得分:1)
尝试:
_list = []
signal = [-1, -1, -1, 1, -1, 1, 1, -1, 1, -1, 1, 1]
_list.append(signal[0])
for i in range(1,len(signal)):
if signal[i] == signal[i-1]:
_list.append(0)
else:
_list.append(signal[i])
signal = _list
print(signal)
输出:[-1, 0, 0, 1, -1, 1, 0, -1, 1, -1, 1, 0]