I have a question about masking/slicing the 2D numpy array using a boolean mask. Here I have a np 2D-array x, which is
x=np.tile(np.arange(10).reshape(10,1),(1,10))
[[0 0 0 0 0 0 0 0 0 0]
[1 1 1 1 1 1 1 1 1 1]
[2 2 2 2 2 2 2 2 2 2]
[3 3 3 3 3 3 3 3 3 3]
[4 4 4 4 4 4 4 4 4 4]
[5 5 5 5 5 5 5 5 5 5]
[6 6 6 6 6 6 6 6 6 6]
[7 7 7 7 7 7 7 7 7 7]
[8 8 8 8 8 8 8 8 8 8]
[9 9 9 9 9 9 9 9 9 9]]
The x is a 10 by 10 array, whose each column is the same. If there is any better way to generate this, could you please point that out? Thanks. Then there is a boolean array,
y=(x!=np.arange(10))
[[False True True True True True True True True True]
[ True False True True True True True True True True]
[ True True False True True True True True True True]
[ True True True False True True True True True True]
[ True True True True False True True True True True]
[ True True True True True False True True True True]
[ True True True True True True False True True True]
[ True True True True True True True False True True]
[ True True True True True True True True False True]
[ True True True True True True True True True False]]
Now, I want to get the resulting array like,
[[1 0 0 0 0 0 0 0 0 0]
[2 2 1 1 1 1 1 1 1 1]
[3 3 3 2 2 2 2 2 2 2]
[4 4 4 4 3 3 3 3 3 3]
[5 5 5 5 5 4 4 4 4 4]
[6 6 6 6 6 6 5 5 5 5]
[7 7 7 7 7 7 7 6 6 6]
[8 8 8 8 8 8 8 8 7 7]
[9 9 9 9 9 9 9 9 9 8]]
The elements in x whose corresponding position in y has value False are removed, and the new 2D-array is returned. So how could I get this for this situation?
Thanks very much for your help.