Failed to get required indices from multiple NumPy arrays

I have 4 numpy arrays of the same shape (i.e. 2d). I need to know the index of the last array (d) where the d elements are less than 20, but those d indices must be located in the area where the elements of the array (a) are 1; and array elements (b) and (c) are not equal to 1.

I tried the following:

mask = (a == 1)|(b != 1)|(c != 1)

answer = d[mask | d < 20]

      

Now I have to set those areas d to 1; and all other regions d are at 0.

d[answer] = 1
d[d!=1] = 0
print d

      

I couldn't solve this problem. How do you solve it?

import numpy as np

a = np.array([[0,0,0,1,1,1,1,1,0,0,0],
                 [0,0,0,1,1,1,1,1,0,0,0],
                 [0,0,0,1,1,1,1,1,0,0,0],
                 [0,0,0,1,1,1,1,1,0,0,0],
                 [0,0,0,1,1,1,1,1,0,0,0],
                 [0,0,0,1,1,1,1,1,0,0,0]])

b = np.array([[0,0,0,1,1,0,0,0,0,0,0],
                 [0,0,0,0,0,0,1,1,0,0,0],
                 [0,0,0,1,0,1,0,0,0,0,0],
                 [0,0,0,1,1,1,0,1,0,0,0],
                 [0,0,0,0,0,0,1,0,0,0,0],
                 [0,0,0,0,1,0,1,0,0,0,0]])

c = np.array([[0,0,0,0,0,0,1,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,1,1,0,0,0],
                 [0,0,0,0,0,0,1,0,0,0,0],
                 [0,0,0,0,1,0,0,0,0,0,0],
                 [0,0,0,0,0,1,0,0,0,0,0]])


d = np.array([[0,56,89,67,12,28,11,12,14,8,240],
                 [1,57,89,67,18,25,11,12,14,9,230],
                 [4,51,89,87,19,20,51,92,54,7,210],
                 [6,46,89,67,51,35,11,12,14,6,200],
                 [8,36,89,97,43,67,81,42,14,1,220],
                 [9,16,89,67,49,97,11,12,14,2,255]])

      

+3


source to share


1 answer


Conditions must be AND-ed together instead of OR-ed. First you can get a boolean array / mask representing the area you want and then change on that d

:

mask = (a == 1) & (b != 1) & (c != 1) & (d < 20)
d[mask] = 1
d[~mask] = 0
print d

      



Output:

[[0 0 0 0 0 0 0 1 0 0 0]
 [0 0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 1 0 0 0]]

      

+2


source







All Articles