多次重复将相同的两个数据帧相乘会在一些迭代后引发错误
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 的机器,它 运行 很好。
在下面的示例中,经过一些没有问题的迭代后,出现了除法错误,因为 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 的机器,它 运行 很好。