2016-01-08 79 views
0

我有一个numpy 3d数组,我想在其中查找出现零值的概率。计算axis = 0中numpy 3d数组中零的出现次数

因此首先在想要的多少在轴存在零计数= 0

类似于arr.sum(轴= 0)是有,将在返回的2D阵列具有零点计数的任何方法我3d数组。

>>> 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]] 
+0

IIUC,'arr.sum(axis = 0)'也适用于3D案例。看着你的浮点数据,看起来你可以使用一些公差值来检查零,如'(np.abs(arr) Divakar

+0

这将是很好,如果numpy.count_nonzero接受轴参数,但https://github.com/numpy/numpy/issues/391 –

回答

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 

这是我现在我有零发生的所有概率中发现的最简单的方法。

>>> 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.  ]] 
>>> 
+0

你可以简化你的前四行代码'only_z_sum =(arr == 0)的.sum(轴= 0)” –