views:

98

answers:

1

With this code:

import scipy
from scipy import *
x = r_[1:15]  
print x 
a = select([x > 7, x >= 4],[x,x+10])  
print a

I get this answer:

[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14]
[ 0  0  0 14 15 16 17  8  9 10 11 12 13 14]

But why do I have zeros in the beginning and not in the end? Thanks in advance.

+5  A: 

You seem to be using numpy.

From the documentation for numpy.select():

numpy.select(condlist, choicelist, default=0)

...

default: The element inserted in output when all conditions evaluate to False.

Since your conditions are x > 7 and x >=4, the output array will have elements from x+10 when x >= 4 and from x when x > 7. When both the conditions are false, i.e., when x < 4, you will get default, which is 0. So you get 3 zeros in the beginning.

You don't get any zeros in the end because at least one of the conditions is true (both are true, in fact).

Alok
I thougt there is only one condition. Sorry, I was blind.
kame