我是編程新手。在我最新的Python 2.7的項目,我遇到了以下:Python RuntimeWarning:在長標量中遇到的溢出
RuntimeWarning:在long_scalars
遇到可能有人請詳細說明這是什麼意思,我可以做些什麼來解決這個問題是什麼溢出?
該代碼貫穿始終,但我不確定是否忽略該警告是一個好主意。
這期間追加的過程發生,如:
SomeList.append(VeryLongFormula)
我是編程新手。在我最新的Python 2.7的項目,我遇到了以下:Python RuntimeWarning:在長標量中遇到的溢出
RuntimeWarning:在long_scalars
遇到可能有人請詳細說明這是什麼意思,我可以做些什麼來解決這個問題是什麼溢出?
該代碼貫穿始終,但我不確定是否忽略該警告是一個好主意。
這期間追加的過程發生,如:
SomeList.append(VeryLongFormula)
下面是其發出同樣的警告的例子:
import numpy as np
np.seterr(all='warn')
A = np.array([10])
a=A[-1]
a**a
產量
RuntimeWarning: overflow encountered in long_scalars
在它上面發生,因爲該示例a
是dtype int32
,而maximim v可存儲在int32
中的數據是2 ** 31-1。由於10**10 > 2**32-1
,冪運算得到的結果數大於可存儲在int32
中的數。
請注意,您不能依靠np.seterr(all='warn')
來捕獲numpy中的所有溢出 錯誤。例如,在32位NumPy的
>>> np.multiply.reduce(np.arange(21)+1)
-1195114496
而在64位NumPy的:
>>> np.multiply.reduce(np.arange(21)+1)
-4249290049419214848
都失敗沒有任何警告,儘管也由於溢出錯誤。正確的答案是21!等於
In [47]: import math
In [48]: math.factorial(21)
Out[50]: 51090942171709440000L
According to numpy developer, Robert Kern,
不像真正的浮點錯誤(在硬件FPU設置一個 標誌 只要它是溢出的原子操作),我們需要 實現整數溢出檢測我們自己。我們在 標量上執行它,但不是數組,因爲它對於在陣列上執行每個原子操作的 執行 太慢。
所以你的負擔是選擇適當的dtypes
,以免操作溢出。
一個簡單的方法來解決這個問題是使用64位類型
list = numpy.array(list, dtype=numpy.float64)
請您展現出[短,完整的示例](http://sscce.org/)演示這個問題? –
你包含numpy標籤。你的問題中沒有任何東西可以表明它是不平坦您沒有包含允許我們重現錯誤的代碼。請這樣做。 –
http://stackoverflow.com/questions/3767409/python-warning-possibly-numpy可能的副本 – rocksportrocker