我有两个不同形状的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