【问题标题】:MemoryError in IPython (using Windows)IPython 中的 MemoryError(使用 Windows)
【发布时间】:2015-04-16 18:00:21
【问题描述】:

我一直在尝试在 IPython 中初始化一个 1000 x 1000 x 120 的 numpy 整数数组,每次我得到一个 MemoryError。我不知道为什么会这样,因为它真的不是那么大的数组。

我的代码很简单:

bigLattice = np.zeros((numsimulations,end2+1,t+1))

如果有什么我可以修复的,请告诉我,以便 numpy 可以访问更多内存。

【问题讨论】:

    标签: python memory numpy


    【解决方案1】:

    浮点数的默认类型是float64,所以你的矩阵大小是915Mb

    In [1]: a = np.zeros((1000,1000,120))
    
    In [2]: %whos
    Variable   Type       Data/Info
    -------------------------------
    a          ndarray    1000x1000x120: 120000000 elems, type `float64`, 960000000 bytes (915 Mb)
    

    Here's a link 在这里您可以找到有关可用dtypes 及其限制的详细信息。

    如果您只需要存储一个字节的整数值,那么您可以使用int8 值进行实例化:

    np.zeros((1000,1000,120),dtype=np.int8)
    

    这会将大小减少到 114Mb:

    %whos
    Variable   Type       Data/Info
    -------------------------------
    a          ndarray    1000x1000x120: 120000000 elems, type `int8`, 120000000 bytes (114 Mb
    

    【讨论】:

    • 这是完美的,谢谢!有没有办法使用大于 255 的整数值?
    • uint16uint32,取决于您的需要。 uint16 为 228Mb,uint32 为 457Mb
    猜你喜欢
    • 2013-12-21
    • 2022-01-24
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多