# Conditionally replace values on three 2d numpy arrays

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]]
``````