0
我在PyCharm嘗試的東西,所以我寫了一段簡單的代碼包括:np.arange()不能正確平方
xlist = np.arange(99995,99996)
print(xlist*xlist)
>>> array([1409065433])
正如你所看到的,答案是不正確!我應該得到9999000025.我偶然發現了這一點,因爲我原來寫:
xlist = np.arange(0,100000)
for x in xlist:
print(x)
z = x * x
print(z)
print(xlist*xlist)
,得到了許多奇怪的結果,包括負值爲繞x 90000
三個朋友測試了這段代碼兩個獲得了與我相同的結果(在Windows上),另一個在Linux上得到了正確的結果,所以它似乎取決於操作系統...
任何人都知道這到底是怎麼回事?
Python3 ints是任意精度的。 Numpy默認情況下是32位或64位,所以它們不能任意大,並且可能發生溢出。 –
在執行此操作之前指定:'dtype = np.int64'。 –
@AndrasDeak:不一定是64位。這取決於平臺。 – user2357112