I have a numpy 3d array in which I want to find the probability of occurrence of value zero.
Hence first in want a count of how many zero exist in axis = 0.
Similar to arr.sum(axis=0) is there any method that will return a 2D array with count of Zeros in my 3d array.
>>> print arr
[[[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 7.43459761e-02 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
...,
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 4.58999968e+00
1.50299997e+01 2.30100002e+01]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 1.86000001e+00
5.51999998e+00 1.77899990e+01]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]]
[[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
...,
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 9.39900055e+01
1.11450005e+02 1.15800003e+02]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 8.20799942e+01
9.74399948e+01 1.06649994e+02]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]]
[[ 0.00000000e+00 3.74535918e-02 0.00000000e+00 ..., 3.89999986e-01
9.89999950e-01 9.30000007e-01]
[ 9.29514784e-03 5.75268008e-02 0.00000000e+00 ..., 7.50000000e-01
9.89999950e-01 1.28999996e+00]
[ 0.00000000e+00 7.26988986e-02 5.94767854e-02 ..., 1.71000004e+00
1.43999994e+00 7.19999969e-01]
...,
[ 4.54575920e+00 4.91925001e+00 1.09031944e+01 ..., 1.12470001e+02
9.32400055e+01 6.66599884e+01]
[ 0.00000000e+00 6.33960581e+00 1.05395260e+01 ..., 1.37279984e+02
1.22159996e+02 7.25400009e+01]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]]
...,
[[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
8.99999961e-02 0.00000000e+00]
...,
[ 2.09804267e-01 1.32204843e+00 6.83585852e-02 ..., 7.19999969e-01
1.49999991e-01 0.00000000e+00]
[ 3.02928180e-01 6.30806535e-02 2.42170334e+00 ..., 4.86000013e+00
3.98999977e+00 5.48999977e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]]
[[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
...,
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 5.39999962e-01
5.99999987e-02 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 1.50000000e+00
1.19999997e-01 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]]
[[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
...,
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]]
arr.sum(axis=0)should work for 3D case too. Seeing at your floating point data, it looks you could use some tolerance value for checking zeros like -(np.abs(arr)<tol).sum(axis=0).