簡體   English   中英

一元運算符〜在numpy中做什么?

[英]What does the unary operator ~ do in numpy?

我使用Python的numpy遇到了如下代碼:

~array([0,1,2,3,4,5,4,3,2,1,0,-1,-2])

它給出了輸出:

array([-1, -2, -3, -4, -5, -6, -5, -4, -3, -2, -1,  0,  1])

一元運算符(〜)是否接受數組並應用A->-(A + 1)

如果是這樣,那有什么意義呢?

克里斯·盧茨的評論是正確的。

〜是按位反運算符

看起來它將A變成-(A + 1),因為在許多現代計算機上,負數表示為相應正整數的2的補數,其中該數是從2^(bit length)減去的(即“ 2到位長的冪”,而不是“兩個異或位長” ...)。

在這樣的系統中,-1將被表示為全1。 當然,一個數字及其按位為負的和也將是這樣,

a + ~a = -1        =>
    ~a = -1 - a    =>
    ~a = -(a + 1)

如您所見。

http://en.wikipedia.org/wiki/Bitwise_operation#NOT

最終以負數表示的原因是它們以二進制形式表示的方式:

http://en.wikipedia.org/wiki/Two%27s_complement

〜是一個補碼運算符,如果與int一起使用,它可以在任何python程序中使用(它不僅限於numpy)

關鍵是要能夠對數組中的值進行補充。 對於numpy,它似乎是以下內容的簡寫:

>>> map(lambda e: ~e, [0,1,2,3,4,5,4,3,2,1,0,-1,-2])
[-1, -2, -3, -4, -5, -6, -5, -4, -3, -2, -1, 0, 1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM