我正在尝试找到一种有效的方法来在Python中生成300,000,000个随机1和-1的累积和。我已经能够使用下面的解决方案,n 最多约为 30,000,000。但如果我尝试更大的数字,我就会遇到内存问题。
def tosses(n):
return np.cumsum(np.random.choice([-1,1],n))
您可以将数组分成更小的块。创建一个 for 循环,以
chunk_size
的步长从 0 迭代到 n。在此循环中,生成数组块如下:
chunk = np.random.choice([-1, 1], min(chunk_size, n - i))
然后,计算每个块的累积和 (cumsum) 并将结果添加到输出数组中。
这不是唯一的方法。您还可以使用内存映射文件来处理大型数组,而无需将它们完全加载到内存中。