附加一系列 2d numpy 数组来创建 3d numpy 数组

问题描述 投票:0回答:1

我以为这是一个简单的问题,但我一直在努力解决。

我有一个包含 4 列的数据框(开盘价、最高价、最低价、收盘价)。

我需要迭代选择

  • 100次
  • 一批75行
  • 每个有 4 列。 这样最终的形状是(100,75,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 没有答案(或者可能是我没有问正确的问题)。

python pandas numpy-ndarray
1个回答
0
投票

按照 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]))
© www.soinside.com 2019 - 2024. All rights reserved.