我以为这是一个简单的问题,但我一直在努力解决。
我有一个包含 4 列的数据框(开盘价、最高价、最低价、收盘价)。
我需要迭代选择
我已经尝试过
np.append, np.stack, np.dstack, np.concatenate
。都不起作用。
在
np.append
我得到一个形状(7500,4)
在第二次迭代中的
np.stack
中,存在所有输入数组必须具有相同形状的错误(因为第一次堆栈后原始数组形状不同)。
我的最后一个代码是
np.stack
(没有进行其他尝试):
for i in range (100):
print(i)
if (i==0):
temp_array=timeseries[['Open','High','Low','Close']].iloc[i:i+75].to_numpy()
else:
temp_temp_array=np.stack([temp_array,timeseries[['Open','High','Low','Close']].iloc[i:i+75].to_numpy()])
temp_array=temp_temp_array
print(temp_array.shape)
似乎 stackoverflow/internet 没有答案(或者可能是我没有问正确的问题)。
按照 Quang 的建议,您可以在此处使用步幅来提高速度和记忆(!)效率:
X = df.values
rolling_X = np.lib.stride_tricks.as_strided(X, shape=(X.shape[0],75,X.shape[1]), strides=(X.strides[0], X.strides[0], X.strides[1]))