Python int太大,无法转换为C长代码,需要修复

Python int太大,无法转换为C长代码,需要修复,python,matrix,overflow,Python,Matrix,Overflow,嘿,伙计们,当我运行代码时,我总是遇到这个错误 Traceback (most recent call last): File "Jacobi.py", line 93, in <module> limit, guess, statement = jacobi(sys.argv[1], sys.argv[2]) File "Jacobi.py", line 65, in jacobi guess[0, i] = guess2[0, i] OverflowErr

嘿,伙计们,当我运行代码时,我总是遇到这个错误

Traceback (most recent call last):
  File "Jacobi.py", line 93, in <module>
    limit, guess, statement = jacobi(sys.argv[1], sys.argv[2])
  File "Jacobi.py", line 65, in jacobi
    guess[0, i] = guess2[0, i]
OverflowError: Python int too large to convert to C long
创建一个矩阵 elim=[aCols-1] N=np.deleteA,elim,1 A=N

for i in range (0, A.shape[0]):
    for k in range (0, A.shape[0]):
        A[i,k] = round((A[i,k]),7)
print(A)
print ('\n')
print(b)


tol = float(tolIn)

#Sets intial previous guess so loop does not stop first try
prevGuess = np.zeros((1, aRows))
for i in range (0, aRows):
    prevGuess[0,i] = 1000


guess2 = np.zeros((1, aRows))
limit = 0
aRows = int(A.shape[0])
aCols = int(A.shape[1])


while ((np.linalg.norm(guess - prevGuess) > tol) and limit < 100):
    for j in range (0, aRows):
        guess2[0,j] = b[j,0]
        for i in range (0, aCols):
            if (i != j):
                guess2[0,j] = round((guess2[0,j] -(A[j,i]) * (guess[0,i])), 7)
        guess2[0,j] = round((guess2[0,j] / A[j,j]), 7)

    for i in range(0, aCols):
            prevGuess[0,i] = guess[0, i]
    for i in range(0, aCols-1):
            guess[0, i] = round((guess2[0, i]), 7)
    guess2 = np.zeros((1, aCols))
    limit = limit + 1

#answers mod 2 to get real answers
#for i in range(0,aCols):
#    guess[0,i] = guess[0,i]%2

#print ('\n')
#print(limit)
#print ('\n')
#print (guess)
#print ('\n')
我认为范围要求最大数包含在c整数范围内。如果您想绕过此问题,可以使用itertools.count。它从0或作为参数传递的数字开始,并一直计数或直到中断为止

例如:

for i in itertools.count():
    if i == 10:
        break
    print i

文档:

但它适用于其他代码,它与我输入的文件有关。一个有小数,另一个只有整数。不幸的是,对我来说,问题中有很多代码没有描述,所以我只能猜测每个部分的作用。我自己也不能测试。你能举例说明输入、输出和你的期望吗?这将帮助我更好地理解。输入是一个.dat文件,包含我使用load.txt加载到矩阵中的值。我用过带直整数的文件,效果很好,我有一个带长小数的文件,它会抛出这个消息。我将用我的全部代码编辑这篇文章。你是否手动检查过你的输入是否小于整数大小?该大小将根据python安装的32位或64位而有所不同。
for i in itertools.count():
    if i == 10:
        break
    print i