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)'

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.