I have three 2×2 numpy arrays like so:

```
import numpy as np
#create three arrays
one = np.array([[1, -1],
[-1, 1]])
two = np.array([[-1, 0],
[-2, 2]])
three = np.array([[1, 1],
[-4, 3]])
```

I want to make a fourth 2×2 array and replace the values based on `one`

, `two`

and `three`

so that if in a particular location all three arrays have values less than one, to make the new value -1, and if all three arrays have values greater than one, to make the new value 1. If the condition is not met I want to turn the values to 0.

I am attempting this like so:

```
#make a copy of one
final = one.copy()
#where all of the three initial arrays are > 0 make the value 1
final[(one > 0) & (two > 0) & (three >0)] = 1
#where all of the three initial arrays are < 0 make the value -1
final[(one < 0) & (two < 0) & (three <0)] = -1
```

which returns:

```
array([[ 1, -1],
[-1, 1]])
```

So in this case the index at `[0,0]`

and `[0,1]`

I want to return zero while `[1,0]`

should be -1 and `[1,1]`

should be 1 or this:

```
[0, 0,
[-1, 1]
```

I think it is because I am not saying how to change the value to 0 when the original two conditions are not met, and I can’t seem to work out how to do that.

### >Solution :

With `np.select`

for multiple choices on conditions (and default value `0`

):

```
final = np.select([(one > 0) & (two > 0) & (three > 0),
(one < 0) & (two < 0) & (three < 0)], [1, -1])
print(final)
```

```
[[ 0 0]
[-1 1]]
```