2016-12-24 52 views
0

我不記得np.zeros(x)是否會自動將浮點數x轉換爲int,所以我在IDLE中試過。我第一次得到的是一條警告消息,它涉及我在同一會話中早先運行的腳本,然後警告我「使用非整數而不是整數會在將來導致錯誤」。爲什麼Python給我這個奇怪的可見棄用警告?有什麼東西在這裏學習?

我再次嘗試了一次,並且警告沒有重複,數組按照預期與dtype=float實例化。

爲什麼會警告說有錯誤(相對於可能是),並且會是什麼?爲什麼它提到了我今天早些時候運行的腳本中的第一個非空白行,將其嵌入到警告中?

這可能是IDLE如何工作的窗口 - 所以我希望從中學到一些東西。我有read here,我可以壓制警告,但我想先了解它的行爲。

>>> 
>>> equator = np.zeros(3.14) 

Warning (from warnings module): 
    File "/Users/xxxxxx/Documents/xxxxxx/CYGNSS/CYGNSS TLE interpolator v00.py", line 2 
    CYGNSS_BLOB = """1 41884U 16078A 16350.61686218 -.00000033 00000-0 00000+0 0 9996 
VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future 
>>> 
>>> equator = np.zeros(3.14) 
>>> equator 
array([ 0., 0., 0.]) 
>>> 
+0

IDLE Shell僅包裝Python,與numpy或scipy包的警告無關。如果您直接使用Python運行相同的代碼,或者在任何不抑制警告的IDE中運行相同的代碼,您應該會看到相同的消息,可能是格式稍有不同。 –

+0

陣列應該在您第一次跑線時實例化。警告不應阻止執行。 –

+1

我現在看到你問了關於行參考的第二個子問題。這可能是一個IDLE特定的錯誤。你正在運行什麼特定的2.7.z錯誤修復版本? –

回答

2

「未來」的意思是「未來版本的NumPy」。到目前爲止,您會收到警告,而不是錯誤。作業已完成(您不需要第二次運行命令,equator已按您的意願分配),並且執行正常進行。

但是一些未來版本的NumPy會拋出一個錯誤,停止執行。

警告在同一會話中不再重複;那裏有一些邏輯旨在避免嘮叨用戶太多。

我無法解釋行參考;對我來說它指的是__main__:1:

+0

好的,謝謝你的解釋 - 有道理,我認爲我已經看到IDLE這樣做了一次或兩次 - 將一些信息納入似乎不適用的警告或錯誤中。似乎沒有什麼可擔心的。 – uhoh

相關問題