分批循环遍历数组 Python 以创建新数组而不覆盖

Batch-wise loop over array Python to create new array without overwriting

我想迭代形状为 (1134500, 1, 50) 的 3d 数组(序列)

array([[[1000, 1000, 1000, ..., 1005, 1005, 1005]],

   [[1000, 1000, 1000, ..., 1004, 1005, 1004]],

   [[1000, 1000, 1000, ..., 1004, 1005, 1004]],

   ...,

   [[1000, 1000, 1000, ..., 1005, 1005, 1004]],

   [[1000, 1000, 1000, ..., 1005, 1005, 1005]],

   [[1000, 1000, 1000, ..., 1004, 1005, 1004]]], dtype=int32)

为此,我使用了以下 for 循环,除了覆盖之前批处理的结果外,它运行良好:

batchsize = 500

for i in range(0, sequences.shape[0], batchsize):
   batch = sequences[i:i+batchsize]
   relevances = lrp_model.lrp(batch)

因此,我想要一个形状为 (1134500, 1, 50) 的数组(相关性),但我得到一个形状为 (500, 1, 50) 的数组(相关性) 有人可以告诉我出了什么问题吗?

如果您想保存相关性,也许

batchsize = 500
relevances = np.zeros(sequences.shape)
for i in range(0, sequences.shape[0], batchsize):
   batch = sequences[i:i+batchsize]
   relevances[i:i+batchsize, :, :] = lrp_model.lrp(batch)