How do I take the standard deviation under a mask along a specific axis in a numpy array?
data = array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
M = array([[0, 1, 0, 0, 0],
[1, 1, 1, 1, 1],
[1, 1, 0, 1, 1],
[0, 0, 1, 0, 0],
[0, 0, 0, 0, 0]])
The result array should be:
masked_std = std( data, axis=0, mask=M )
[ std([5,10]), std([1,6,11]), std([7,17]), std([8,13], std([9,14]) ]
You can use a numpy masked array: