如何在 numpy 中填充一个大数组?

Posted

技术标签:

【中文标题】如何在 numpy 中填充一个大数组?【英文标题】:How do I fill a large array in numpy? 【发布时间】:2022-01-05 21:41:21 【问题描述】:

我正在尝试填充大小为 2 ^ 32 的数组,并且在填充的某个阶段它表明进程已被终止

def MakeArr(n):
    start_time = time.time()

    arr = np.random.randint(1, 2**n, size=2**n, dtype=np.int64)

    print(arr)
    print("Time to create: %s sec" % (time.time() - start_time))
    print("arr len:" + str(len(arr)))
    return arr
sys.setrecursionlimit(1500); n = 32; arr = MakeArr(n)

enter image description here

【问题讨论】:

你有 16gb 的内存来分配这个数组吗? 打开任务管理器查看你的内存使用情况 【参考方案1】:

2^32 的数组可能对于 python 或 numpy 来说太大而无法处理。您可以通过将 dtype 更改为较低的类型来获得更大的数组,例如 np.int8

【讨论】:

这个可行,但是有没有办法增加随机数的范围? 在数组的大小和数字的大小之间需要权衡取舍。您受到内存量的限制 现在我明白了,谢谢 您可能会通过使用 NumPy uint 获得更多价值。它们不允许负数,但范围因此是两倍 知道了,我试试

以上是关于如何在 numpy 中填充一个大数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何从一个可迭代的元组中填充两个(或更多)numpy 数组?

如何从填充零的 3 维 numpy 数组创建 4 维 numpy 数组?

如何在python 3中有效地将原始字节写入numpy数组数据

如何在 2D numpy 数组中查找簇大小?

如何创建一个全部为 True 或全部为 False 的 numpy 数组?

如何用另一个数组创建或填充一个 numpy 数组?