[英]Sequence to Sequence Sum Iteration
我正在寻找有关如何生成从前一个序列的末尾/最后一个开始具有累积和的序列的方向。
n_pre序列是从原始数据的滚动和构建的。 n_post序列需要使用索引中正确点的原始数据值来构建n_pre序列的最终总和。
import pandas as pd
import numpy as np
# sample data
data = np.array([10, -1, 10, 10, -1, -10, 5, -5, -5, 10, 10, 5, -10, 10, 5, 10, -5, 10])
# load data into Pandas DataFrame
df = pd.DataFrame(data=data, columns=['data'])
# perform rolling sum calculation on data
df['roll_sum'] = df.rolling(5).sum().fillna(0)
# prepare data for sequences
X = np.array(df.roll_sum)
Y = np.array(df.data) # Y array and sequences need to sum the values from the end/last of the n_pre
sequence
dX, dY = [], []
n_pre = 5
n_post = 3
for i in range(len(X) - n_pre - n_post):
dX.append(X[i:i + n_pre])
dY.append((Y[i + n_pre:i + n_pre + n_post]))
dataX = np.array(dX)
#dataX = np.reshape(dataX, (-1, n_pre, 1))
dataY = np.array(dY)
#dataY = np.reshape(dataY, (-1, n_post, 1))
第一个 dataX 序列将生成:
[[ 0. 0. 0. 0. 28.]
第一个 dataY 序列将生成:
[[-10 5 -5]
我希望 dataY 序列生成这个:
[[18 23 18]]
计算(从 dataX 序列的末尾) 28 -10 +5 -5 = 18 作为该数组中的最终值。
我创建了变量 a、b、c、d 和 e。
dY
。代码:
import pandas as pd
import numpy as np
# sample data
data = np.array([10, -1, 10, 10, -1, -10, 5, -5, -5, 10, 10, 5, -10, 10, 5, 10, -5, 10])
# load data into Pandas DataFrame
df = pd.DataFrame(data=data, columns=['data'])
# perform rolling sum calculation on data
df['roll_sum'] = df.rolling(5).sum().fillna(0)
# prepare data for sequences
X = np.array(df.roll_sum)
Y = np.array(df.data) # Y array and sequences need to sum the values from the end/last of the n_pre
dX, dY = [], []
n_pre = 5
n_post = 3
for i in range(len(X) - n_pre - n_post):
a = X[i:i + n_pre]
b = Y[i + n_pre:i + n_pre + n_post]
c = a[-1] + b[0]
d = c + b[1]
e = d + b[2]
dX.append(a)
dY.append([c, d, e])
dataX = np.array(dX)
#dataX = np.reshape(dataX, (-1, n_pre, 1))
dataY = np.array(dY)
#dataY = np.reshape(dataY, (-1, n_post, 1))
dataY
dataY
:
array([[18., 23., 18.],
[13., 8., 3.],
[ 9., 4., 14.],
[-6., 4., 14.],
[-6., 4., 9.],
[ 5., 10., 0.],
[20., 10., 20.],
[ 5., 15., 20.],
[20., 25., 35.],
[30., 40., 35.]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.