我計算蟒2個numpy.uint8
S之間的絕對差值與 d = abs(a - b)
,這會導致溢出錯誤如果b
比a
更大。避免這種情況的最好方法是什麼?更好的方法來計算numpy的無符號整數之間的差異在Python
4
A
回答
3
如您的評論所示,他們不是int
s;他們是numpy.uint8
s。只需將它們轉換爲int
S:
>>> a, b = map(numpy.uint8, (50, 60))
>>> a - b
__main__:1: RuntimeWarning: overflow encountered in ubyte_scalars
246
>>> a, b = map(int, (a, b))
>>> a - b
-10
既然你擔心速度,這裏有幾個測試(借用Sven的形式,感謝):
>>> %timeit abs(int(a) - int(b))
1000000 loops, best of 3: 410 ns per loop
>>> %timeit a - b if a > b else b - a
1000000 loops, best of 3: 470 ns per loop
所以,是的,它的速度更快,但除非我們談論數百萬次,否則無所謂。
2
最簡單的方法是你的號碼手動轉換到Python整數第一:
d = abs(int(a) - int(b))
Python的整數不能溢出(除非內存已滿)。
0
對我來說,它不會拋出溢出錯誤,只是如果b
大於a
,會導致錯誤值。留在uint8
界限使用此功能:
def abs_dev (a, b) :
sub1 = a - b
sub2 = b - a
mask = a < b
sub1[mask] = sub2[mask]
return sub1
相關問題
- 1. 計算兩次python之間的差異
- 2. 計算Java中兩個ARGB整數之間差異的最快方法?
- 3. 運算符「==」和「=」之間的差異運算符「==」和「=」之間的差異「==」和「=」
- 4. Python方法找到時間戳差異來計算偶數時間間隔
- 5. numpy數組類型之間的差異
- 6. 如何計算python中各組數字之間的差異?
- 7. 計算日期之間的差異 - Postgres
- 8. 計算兩次之間的差異
- 9. C計算日期之間的差異
- 10. 計算兩列之間的差異sql
- 11. 計算圖像之間的差異
- 12. 計算小時之間的差異
- 13. 計算協方差矩陣 - numpy.cov和numpy.dot之間的差異?
- 14. Python:計算一組整數中所有元素之間的差異
- 15. Python 3 - 計算兩個時間值之間的差異
- 16. 計算兩個日期字段的計數之間的差異
- 17. 在rails更新中計算created_at和now()之間的差異
- 18. 信號量計數器和信號量方法之間的理解差異整數參數?
- 19. 計算二維數組中行之間差異數的最快方法
- 20. 如何計算直方圖的連續行之間的差異?
- 21. 有沒有更好的方法來計算句子中的標點符號?
- 22. 用numpy計算集合的平均值的更好方法
- 23. 兩個日期之間的計算差異MySQL/Python
- 24. 計算兩個指南針標題之間的差異Python
- 25. Python - 計算兩個datetime.time對象之間的差異
- 26. 方法來計算兩個日期之間的時間差,在藥劑
- 27. flat和ravel之間的numpy差異()
- 28. C mmap和numpy memmap之間的差異
- 29. 有沒有更好的方法來計算一個時間段?
- 30. 計算偶數整數的更好方法
呃......不,它沒有。 Python會在必要時自動將整數提升爲long。另外,Python中沒有無符號整數類型。請發佈代碼來演示您實際遇到的問題以及回溯。 – kindall
我從外部庫(pygtk)獲得a和b,其類型爲numpy.uint8。錯誤是RuntimeWarning:在ubyte_scalars中遇到溢出。因此,不可能舉一個簡短的工作示例。 – blues