【问题标题】:How to join several big arrays into one?如何将几个大数组合二为一?
【发布时间】:2017-09-30 12:25:26
【问题描述】:

我是 python 的新手,我有 5 个大数组 A、B、C、D、E 的形状:

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

数据类型:

(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),我认为这可能是内核问题,有什么建议我可以用我的电脑做到这一点吗?

【问题讨论】:

  • 1000000 * 13840 * 8 ~ 103 GB 这在输入#3 上怎么还没有响起?
  • 您是否需要同时将它们全部存储在内存中?

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-04-27
    • 2022-06-27
    • 2019-02-07
    • 2021-12-13
    • 2022-01-04
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多