多次重复将相同的两个数据帧相乘会在一些迭代后引发错误

Repeatedly multiplying the same two dataframes many times raises error after some iterations

在下面的示例中,经过一些没有问题的迭代后,出现了除法错误,因为 C 数据帧被 0 而不是 1 填充(没有问题的迭代次数不时更改为时间,例如 Spider 上为 22 到 46,Jupyter 上为 200 到 600)。

减少行数或列数可避免此问题。似乎指向内存问题。

欢迎任何解释,因为我正在执行需要类似计算的多个模拟(但我知道这个例子没有实际意义)。

import pandas as pd
A=pd.DataFrame(1, range(1,1000), range(1,132))
B=A.copy()
for i in range (0,10000):
    C=A.multiply(B)
    print ("Iteration "+str(i)+", Sum of C : "+str(C.sum().sum())+", Inverse of the sum of C : "+str(1/(C.sum().sum())))

这不是 Python 或 Pandas 问题。如果你 运行 它是从终端原始的,你会看到这个 运行 是正确的。

这可能是由于 Spyder 和 Jupyter 在循环进行时试图捕获数据的开销。

如果机器有足够的 RAM,您应该仍然可以 运行 在 Spyder and/or Jupyter 上执行此操作。我只是 运行 在 Jupyter 上使用 16GB 的机器,它 运行 很好。