如何将几个大数组合并为一个?

时间:2017-09-30 12:25:26

标签: python arrays numpy memory-management cpu-usage

我是python的新手,我有5个大阵列A,B,C,D,E和形状:

((1000000, 8), (1000000, 7), (1000000, 13840), (1000000, 204), (1000000, 3))

dtypes:

(dtype('float64'), dtype('float64'), dtype('int64'), dtype('int64'), dtype('float64'))

现在我想将它们全部加入到一个形状为

的数组中
(1000000, 8+7+13840+204+3) = (1000000, 14062)

我已经尝试了所有可能的方式(hstack / concate),

data_feature = np.concatenate((A,B,C,D,E), axis=1)
data_feature = np.hstack([A,B,C,D,E])
data_feature = np.hstack((A,B,C,D,E))
data_feature = np.column_stack([A,B,C,D,E])

但这一切都毁了我的系统(Macbook Pro 2017 / 2.8GHz Intel Core i7 / 16 GB 2133 MHz LPDDR3),我认为这可能是一个内核问题,我可以用我的电脑做任何建议?

1 个答案:

答案 0 :(得分:3)

给定64位(8字节)值,您正在尝试处理:

1000000 * 14062 * 8 * 2 = 224'992'000'000 bytes

最后的2是因为你有输入加上相等大小的输出。

这是209 GiB的数据。你有16 GiB的RAM。这是不可行的。您需要更加深入地思考如何处理数据,以及如何将数据减少10倍。或者购买具有192 GiB RAM的机器(这些天很有可能,这只是不在笔记本电脑上。)