连接不同形状的Numpy数组(我的方法工作得很好,但是数据消耗太多内存)



我有两个不同形状的Numpy数组,我正在将它们连接起来。但是它占用了太多的内存,因此创建/生成了一个非常大的约74 GB的串联数组,而我的第一个数组的大小为16 GB,第二个数组的大小为7 kb。我的数据是这样的。

(380, 16, 512, 512)
(380, 4)

连接这两个数组的代码如下:

a = np.reshape(a, (380, 16, 512, 512, 1))
b = np.reshape(b, (380, 4, 1))
b = np.transpose(b, [0, -1, 1])
b = np.repeat(b, 16, axis=1)
b = np.reshape(b, (380, 16, 4 ,1, 1))
b = np.transpose(b, [0, 1, -1, -2, 2])
b = np.repeat(b, 512, axis=2)
b = np.repeat(b, 512, axis=3)
train_data = np.concatenate([a, b], axis=-1)

正如我提到的代码工作得很好,但我需要一种方法来连接两个数组,这将产生一个新的较小大小的合并数组,即32,33 GB的。请告诉我应该用什么方法来做这件事。

我需要的结果数组的形状为。

(380, 16, 512, 512, 5)

谢谢。

将数组操作包装在专门为大数据/内存不足操作构建的库中。Dask是我最熟悉的一个,但还有其他的。下面是类似问题的答案:https://stackoverflow.com/a/74658009/5373105

相关内容

  • 没有找到相关文章