首页 > 解决方案 > 超出最大允许尺寸

问题描述

我正在尝试根据宇宙的质量用 pi 和地球在海平面的引力常数转换为二进制来制作一幅画。我已经完成了数学计算,我有正确的尺寸,它应该只小于一兆字节的内存,但我遇到了最大允许尺寸超出值错误。

这是代码:

import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np

boshi = 123456789098765432135790864234579086542098765432135321 # universal mass

genesis = boshi ** 31467 # padding

artifice = np.binary_repr(genesis) # formatting

A = int(artifice) 

D = np.array(A).reshape(A, (1348, 4117))

plt.imsave('hello_world.png', D, cmap=cm.gray) # save image

我一直遇到错误D = np.array...,也许我的重塑太大但它只比 4k 大一点。似乎这对于 gpu 增强的 colab 应该没问题。也不会在我的家用机器上运行,但出现相同的错误。这会用更多的内存来解决吗?

标签: pythonarraysimagehardwarereshape

解决方案


我无法重现您的问题,因为这条线A = int(artifice)就像永远一样。我将其替换为 ,for循环以自行转换每个数字。然后代码工作并产生了所需的图像。

import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np

boshi = 123456789098765432135790864234579086542098765432135321
genesis = boshi ** 31467
artifice = np.binary_repr(genesis)

D = np.zeros((1348, 4117), dtype=int)
for i, val in enumerate(D):
    D[i] = int(artifice[i])

plt.imsave('hello_world.png', D, cmap=cm.gray)

推荐阅读