gpt4 book ai didi

python - 连接两个大的 numpy 二维数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:18:53 24 4
gpt4 key购买 nike

我有两个大的 numpy 二维数组。一种形状是 X1 (1877055, 1299),另一种是 X2 (1877055, 1445)。然后我用

X = np.hstack((X1, X2))

将两个数组连接成一个更大的数组。但是,该程序不会运行并以代码 -9 退出。它没有显示任何错误消息。

问题是什么?如何连接这么大的两个 numpy 二维数组?

最佳答案

除非您的 NumPy 构建或您的操作系统有问题(两者都不太可能),否则这几乎可以肯定是内存错误。

例如,假设所有这些值都是 float64。因此,您已经为这两个数组分配了至少 18GB 和 20GB 的空间,现在您正试图为连接的数组分配另外 38GB 的​​空间。但是你只有 64GB 的 RAM 加上 2GB 的交换空间。因此,没有足够的空间再分配 38GB。在某些平台上,这种分配只会失败,希望 NumPy 会捕获并引发 MemoryError。在其他平台上,分配可能会成功,但是一旦您尝试实际接触所有这些内存,您就会出现段错误(有关示例,请参见 linux 中的 overcommit handling)。在其他平台上,系统会尝试自动扩展交换空间,但如果您的磁盘空间不足,它就会出现段错误。

不管是什么原因,如果你不能同时将X1X2X装入内存,你还能做什么做什么呢?

  • 只需首先构建X,然后通过填充X 的切片 View 来填充X1X2 .
  • X1X2 写入磁盘,在磁盘上连接,然后将它们读回。
  • X1X2 发送到子进程,该子进程迭代读取它们并构建 X,然后继续工作。

关于python - 连接两个大的 numpy 二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com