当前位置: 首页 > 面试题库 >

Numpy内存错误创建巨大的矩阵

充培
2023-03-14
问题内容

我正在使用numpy并尝试创建一个巨大的矩阵。这样做时,我收到内存错误

由于矩阵并不重要,因此我将向您展示如何轻松重现错误的方法。

a = 10000000000
data = np.array([float('nan')] * a)

毫不奇怪,这把我扔了 MemoryError

我想讲两件事:

  1. 我真的需要创建和使用一个大矩阵
  2. 我认为我有足够的RAM来处理此矩阵(我有24 Gb或RAM)

有没有一种简单的方法可以处理numpy中的大型矩阵?

为了安全起见,我之前阅读过这些帖子(听起来很相似):

使用Python和NumPy的超大型矩阵

Python / Numpy
MemoryError

PS显然我在数的乘法和除法 方面 存在一些问题 ,这使我认为我有足够的内存。所以我认为是时候该睡觉了,复习数学,也许是买些记忆。

也许是在这段时间里,一些天才可能提出了如何仅使用24 Gb Ram实际创建此矩阵的想法。

为什么我需要这个大矩阵,
所以我不会对该矩阵做任何操作。我需要做的就是将其保存到pytables中。


问题答案:

假设每个浮点数均为4个字节,您将拥有

(10000000000 * 4) /(2**30.0) = 37.25290298461914

或需要在内存中存储37.5 GB。所以我认为24gb的RAM是不够的。



 类似资料:
  • 代码: 导致"ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()” 有什么问题?

  • 问题内容: 我有以下代码: 它创建一个填充零的矩阵。相反,我想知道是否有一种函数或方法可以将它们初始化为s,而方法很简单。 问题答案: 您很少需要在numpy中进行矢量操作循环。您可以创建一个未初始化的数组并立即分配给所有条目: 我已经在这里和Blaenk发布的时间安排了时间: 时序显示优先选择作为更快的替代方案。OTOH,我喜欢numpy的便捷实现,在该实现中您可以同时为整个slice分配值,代

  • 在Java中分配堆外内存时(例如通过直接缓冲区或JNI本机代码),如果JVM使用-XX: UseLargePages,分配的内存是否会由巨大的页面支持?

  • 问题内容: 拥有一个拥有520多个表的ERP数据库,EntityPersister的postInstanciate速度非常慢,并且消耗的512M以上(仅对于一个会话Factory而言是很大的),应用程序也变得非常慢。 问题答案: 我无法发布所有更改,但是这里有一些想法: 1_ postInstanciate为所有实体和集合创建许多Entiy加载器(每个实体和每个集合的加载器类型很多),此操作应按需

  • 本文向大家介绍详解numpy矩阵的创建与数据类型,包括了详解numpy矩阵的创建与数据类型的使用技巧和注意事项,需要的朋友参考一下 Numpy是python常用的一个类库,在python的使用中及其常见,广泛用在矩阵的计算中,numpy对矩阵的操作与纯python比起来速度有极大的差距。 一、 构造矩阵 矩阵的构造可以有多种方法: 1.使用python中的方法构造矩阵 - 生成一维矩阵 - 生成二

  • 问题内容: 我的BinvA矩阵的(1,1)条目得到一个非常奇怪的值,我 只是想将B矩阵求逆,并进行(B ^ -1)A乘法。 我知道,当我手动进行计算时,我的(1,1)应该为0,但我得到1.11022302e-16。我该如何解决?我知道浮点数不能完全准确地表示出来,但是为什么这会给我这么不准确的响应,而不是四舍五入,有什么办法可以使我更准确呢? 她是我的代码: 我的印刷声明: 问题答案: 计算逆时,