0

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]]
2
  • IIUC, 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). Commented Jan 8, 2016 at 8:43
  • It would be nice if numpy.count_nonzero accepted an axis argument, but github.com/numpy/numpy/issues/391 Commented Jan 8, 2016 at 9:32

1 Answer 1

1
only_z = numpy.copy(arr)
only_z[only_z==0]=1
only_z[only_z!=1]=0
only_z_sum = only_z.sum(axis=0)

prob_of_z = only_z_sum/31

This is the simplest way that I could found now I have all the probabilities of occurrence of zeros.

>>> print prob_of_z
[[ 0.96774194  0.80645161  0.90322581  0.90322581  0.87096774  0.90322581
   0.87096774  0.90322581  0.90322581  0.83870968  0.83870968  0.83870968
   0.87096774  0.93548387  0.90322581  0.93548387  0.90322581  0.96774194]
 [ 0.93548387  0.77419355  0.90322581  0.90322581  0.90322581  0.90322581
   0.87096774  0.87096774  0.90322581  0.80645161  0.77419355  0.80645161
   0.90322581  0.93548387  0.93548387  0.93548387  0.90322581  0.93548387]
 [ 0.80645161  0.80645161  0.83870968  0.87096774  0.87096774  0.83870968
   0.87096774  0.83870968  0.90322581  0.83870968  0.87096774  0.90322581
   0.87096774  0.90322581  0.87096774  0.90322581  0.90322581  0.87096774]
 [ 0.83870968  0.74193548  0.80645161  0.87096774  0.83870968  0.80645161
   0.83870968  0.83870968  0.87096774  0.83870968  0.83870968  0.77419355
   0.77419355  0.77419355  0.77419355  0.83870968  0.80645161  0.80645161]
 [ 0.80645161  0.80645161  0.77419355  0.83870968  0.83870968  0.83870968
   0.83870968  0.83870968  0.80645161  0.77419355  0.77419355  0.74193548
   0.74193548  0.77419355  0.70967742  0.83870968  0.77419355  0.77419355]
 [ 0.77419355  0.77419355  0.74193548  0.77419355  0.80645161  0.77419355
   0.74193548  0.67741935  0.64516129  0.67741935  0.70967742  0.77419355
   0.70967742  0.70967742  0.80645161  0.80645161  0.70967742  0.67741935]
 [ 0.70967742  0.77419355  0.70967742  0.70967742  0.67741935  0.70967742
   0.74193548  0.58064516  0.5483871   0.61290323  0.74193548  0.64516129
   0.67741935  0.74193548  0.74193548  0.70967742  0.74193548  0.74193548]
 [ 0.67741935  0.67741935  0.64516129  0.64516129  0.64516129  0.67741935
   0.61290323  0.58064516  0.58064516  0.58064516  0.64516129  0.64516129
   0.67741935  0.67741935  0.67741935  0.74193548  0.67741935  0.70967742]
 [ 0.61290323  0.64516129  0.64516129  0.67741935  0.64516129  0.61290323
   0.51612903  0.48387097  0.5483871   0.61290323  0.70967742  0.64516129
   0.58064516  0.58064516  0.67741935  0.67741935  0.64516129  0.58064516]
 [ 0.58064516  0.64516129  0.64516129  0.58064516  0.61290323  0.48387097
   0.48387097  0.48387097  0.61290323  0.61290323  0.67741935  0.61290323
   0.58064516  0.61290323  0.64516129  0.67741935  0.74193548  0.64516129]
 [ 0.67741935  0.61290323  0.5483871   0.51612903  0.5483871   0.58064516
   0.51612903  0.58064516  0.58064516  0.61290323  0.58064516  0.5483871
   0.58064516  0.64516129  0.70967742  0.67741935  0.70967742  0.67741935]
 [ 0.74193548  0.70967742  0.48387097  0.48387097  0.48387097  0.51612903
   0.51612903  0.5483871   0.48387097  0.5483871   0.51612903  0.58064516
   0.58064516  0.61290323  0.70967742  0.64516129  0.67741935  0.61290323]
 [ 0.51612903  0.77419355  0.48387097  0.48387097  0.41935484  0.48387097
   0.48387097  0.51612903  0.48387097  0.41935484  0.41935484  0.51612903
   0.5483871   0.5483871   0.64516129  0.58064516  0.64516129  0.61290323]
 [ 0.67741935  0.74193548  0.74193548  0.61290323  0.5483871   0.48387097
   0.48387097  0.38709677  0.38709677  0.41935484  0.4516129   0.51612903
   0.51612903  0.58064516  0.5483871   0.64516129  0.58064516  0.58064516]
 [ 0.70967742  0.70967742  0.70967742  0.67741935  0.41935484  0.41935484
   0.48387097  0.48387097  0.48387097  0.58064516  0.58064516  0.61290323
   0.58064516  0.58064516  0.67741935  0.58064516  0.61290323  0.64516129]
 [ 0.74193548  0.74193548  0.64516129  0.61290323  0.58064516  0.32258065
   0.41935484  0.35483871  0.41935484  0.5483871   0.64516129  0.61290323
   0.61290323  0.51612903  0.51612903  0.5483871   0.51612903  0.64516129]
 [ 0.77419355  0.74193548  0.74193548  0.70967742  0.64516129  0.58064516
   0.35483871  0.38709677  0.48387097  0.5483871   0.61290323  0.58064516
   0.5483871   0.48387097  0.5483871   0.4516129   0.58064516  0.58064516]
 [ 1.          1.          1.          1.          1.          1.          1.
   1.          1.          1.          1.          1.          1.          1.
   1.          1.          1.          1.        ]]
>>> 
Sign up to request clarification or add additional context in comments.

1 Comment

You can simplify your first four lines of code to 'only_z_sum = (arr == 0).sum(axis=0)'

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.