Python - 滚动内减法 window
Python - subtraction inside rolling window
I need to make subtractions inside red frames as [20-10,60-40,100-70]
that results in [10,20,30]
Current code makes subtractions but I don't know how to define red frames
seq = [10, 20, 40, 60, 70, 100]
window_size = 2
for i in range(len(seq) - window_size+1):
x=seq[i: i + window_size]
y=x[1]-x[0]
print(y)
这是一个使用 numpy 的解决方案,如果您必须在短时间内处理大量数据,它可能会很有用。我们 select 值基于它们的索引是偶数 (index % 2 == 0
) 还是奇数 (index % 2 != 0
)。
import numpy as np
seq = [10, 20, 40, 60, 70, 100]
seq = np.array(seq)
index = np.arange(len(seq))
seq[index % 2 != 0] - seq[index % 2 == 0]
您可以利用 seq[0::2]
将从零开始为您提供 seq
的所有其他元素这一事实来构建快速解决方案。所以你可以计算 seq[1::2] - seq[0::2]
来得到这个结果。
不使用任何包你可以做:
seq = [10, 20, 40, 60, 70, 100]
sub_seq = [0]*(len(seq)//2)
for i in range(len(sub_seq)):
sub_seq[i] = seq[1::2][i] - seq[0::2][i]
print(sub_seq)
相反,您可以使用 Numpy。使用 numpy 数组对象,您可以减去数组而不是显式循环:
import numpy as np
seq = np.array([10, 20, 40, 60, 70, 100])
sub_seq = seq[1::2] - seq[0::2]
print(sub_seq)
I need to make subtractions inside red frames as [20-10,60-40,100-70] that results in [10,20,30]
Current code makes subtractions but I don't know how to define red frames
seq = [10, 20, 40, 60, 70, 100]
window_size = 2
for i in range(len(seq) - window_size+1):
x=seq[i: i + window_size]
y=x[1]-x[0]
print(y)
这是一个使用 numpy 的解决方案,如果您必须在短时间内处理大量数据,它可能会很有用。我们 select 值基于它们的索引是偶数 (index % 2 == 0
) 还是奇数 (index % 2 != 0
)。
import numpy as np
seq = [10, 20, 40, 60, 70, 100]
seq = np.array(seq)
index = np.arange(len(seq))
seq[index % 2 != 0] - seq[index % 2 == 0]
您可以利用 seq[0::2]
将从零开始为您提供 seq
的所有其他元素这一事实来构建快速解决方案。所以你可以计算 seq[1::2] - seq[0::2]
来得到这个结果。
不使用任何包你可以做:
seq = [10, 20, 40, 60, 70, 100]
sub_seq = [0]*(len(seq)//2)
for i in range(len(sub_seq)):
sub_seq[i] = seq[1::2][i] - seq[0::2][i]
print(sub_seq)
相反,您可以使用 Numpy。使用 numpy 数组对象,您可以减去数组而不是显式循环:
import numpy as np
seq = np.array([10, 20, 40, 60, 70, 100])
sub_seq = seq[1::2] - seq[0::2]
print(sub_seq)