如何通过遍历数组批次来创建多维结果

时间:2019-01-21 11:51:09

标签: python numpy

我正在遍历一些输入批次并生成具有形状(BatchSize,X,Y)的结果。 BatchSize不一定与我遍历批次相同。我想返回一个单一的输出,它是批次维度上结果的串联版本。在NumPy中最优雅的方法是什么?

我不太担心性能,而是处理累积结果数组的多维性。

2 个答案:

答案 0 :(得分:1)

假设您有足够的内存来保存所有结果,一个好的解决方案是简单地预分配内存:

result = np.empty(OUTPUT_SHAPE)
i=0
while i < input_tensor.shape[0]:
    batch_size = get_batch_size(i)
    result[i:i+batch_size] = deal_with_batch(input_tensor[i:i+batch_size])
    i += batch_size

答案 1 :(得分:0)

The answer by @Scott是正确的。但是,我一直在寻找我发现的增量版本:

定义results = np.empty((0, output_shape)),然后使用results = np.concatenate((results, some_func(x)))

在循环中更新它

我不确定我应该如何考虑numpy中大小为0的维,但是它可以工作。