22

I am trying to rewrite a matlab code in python27. There is a matlab line as follows:

vector_C = vector_A > vector_B;

If I try to write this in python using numpy it will be the same, but the result will be an array of booleans instead of binaries. I want the result to be in binaries. Is there a way to make it return binary or should I convert manually each time? Is there a quick way of converting it? I am new to python. Thanks.

3
  • I believe matlab binary and python boolean are equivalent. Is there something you do in the matlab code with the binary vector that you cannot do with the numpy boolean vector? Commented May 10, 2012 at 1:11
  • I did not try doing anything with the boolean vector yet. But, I just divided the boolean vector by "1" so it is now binary. I guess I could use it without any modification also. Thanks Commented May 10, 2012 at 1:34
  • If that works for you answer your own question to close it off. Commented May 10, 2012 at 16:56

2 Answers 2

22

Even though vector_C may have dtype=bool, you can still do operations such as the following:

In [1]: vector_A = scipy.randn(4)

In [2]: vector_B = scipy.zeros(4)

In [3]: vector_A
Out[3]: array([ 0.12515902, -0.53244222, -0.67717936, -0.74164708])

In [4]: vector_B
Out[4]: array([ 0.,  0.,  0.,  0.])

In [5]: vector_C = vector_A > vector_B

In [6]: vector_C
Out[6]: array([ True, False, False, False], dtype=bool)

In [7]: vector_C.sum()
Out[7]: 1

In [8]: vector_C.mean()
Out[8]: 0.25

In [9]: 3 - vector_C
Out[9]: array([2, 3, 3, 3])

So, in short, you probably don't have to do anything extra.

But if you must do a conversion, you may use astype:

In [10]: vector_C.astype(int)
Out[10]: array([1, 0, 0, 0])

In [11]: vector_C.astype(float)
Out[11]: array([ 1.,  0.,  0.,  0.])
Sign up to request clarification or add additional context in comments.

Comments

8

You can force numpy to store the elements as integers. It treats 0 as false and 1 as true.

import numpy

vector_C = numpy.array( vector_A > vector_B, dtype=int) ;

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.