nary运算符在numpy中做什么?

时间:2010-08-06 21:43:54

标签: python 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)

如果是这样,最重要的是什么?

4 个答案:

答案 0 :(得分:14)

Chris Lutz的评论是正确的。

〜是bitwise negation operator

看起来它将A变为 - (A + 1),因为在许多现代计算机上,负数表示为相应正整数的Two's Complement,其中数字从2^(bit length)中减去(这是“比特长度的两个”,而不是“两个独占或比特长度”......)。

在这样的系统中,-1将表示为全1。 当然,数字的总和也是负数的总和,所以我们有这样的情况

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

你注意到了。

答案 1 :(得分:4)

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

你最终得到负数的原因是它们以二进制形式表示:

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

答案 2 :(得分:2)

〜是ones' complement运算符,如果你使用int,它可以在任何python程序中使用(它不仅仅是numpy)

答案 3 :(得分:0)

关键是要能够采用阵列中的阀门的补充。在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]