Reputation: 2321
Is there a function in Numpy to invert 0 and 1 in a binary array? If
a = np.array([0, 1, 0, 1, 1])
I would like to get:
b = [1, 0, 1, 0, 0]
I use:
b[a==0] = 1
b[a==1] = 0
but maybe it already exist something in Numpy to do this.
Upvotes: 20
Views: 35461
Reputation: 41
In Python 3, suppose
a = [1]
a.append(a[0]^1)
print(a)
Output will be:
[1,0]
Thus if you apply a loop:
for i in range(len(a)):
a.append(a[i]^1)
all the elements of the list will be inverted.
Upvotes: 4
Reputation: 7828
you can simply do:
In[1]:b=1-a
In[2]:b
Out[2]: array([1, 0, 1, 0, 0])
or
In[22]:b=(~a.astype(bool)).astype(int)
Out[22]: array([1, 0, 1, 0, 0])
Upvotes: 45
Reputation: 107287
A functional approach:
>>> np.logical_not(a).astype(int)
array([1, 0, 1, 0, 0])
Upvotes: 15