2014-01-28 109 views
0

我有以下簡單的錯誤代碼差異與PROMT

from numpy import random, sqrt 
points = random.randn(20,3); 
points = points/sqrt(sum(points**2,1)) 

在IPython中(與%autoreload 2),如果我複製並粘貼到終端,我得到一個ValueError正如人們所期望。如果我把它保存爲一個文件並使用%run,那麼它運行時沒有錯誤(它不應該)。

這是怎麼回事?

+1

這段代碼沒有引發'ValueError'。 –

+0

有在我的ipython外殼(因爲它有numpy默認加載)...見下文。 – Lucas

回答

2

我剛剛弄明白了,但是我寫過這個問題,可能對其他人有用。

這是numpy sum和原生sum之間的差異。第一行更改爲

from numpy import random, sqrt, sum 

修復它爲%run默認使用本機版本(至少我的設置)。本機運行不帶軸參數,但也不會拋出錯誤,因爲它是一個start參數,它實際上只是和總和的偏移量。因此,

>>> sum([1,2,3],10000) 
10006 

爲本地版本。並且對於這個顛簸的「軸出界」。