-2
>>> import numpy as np
>>> standart_perc = [50, 75, 80, 85, 90, 95, 98, 99, 100]
>>> a = np.arange(110)
>>> np.percentile(a, standart_perc)
[54.5, 81.75, 87.200000000000003, 92.649999999999991, 98.100000000000009, 103.55, 106.81999999999999, 107.91, 109.0]

54.5 と 81.75、81.75 と 87.200000000000003 などの間の値の割合を計算する方法.. ?

4

3 に答える 3

3
a[(a > 54.5) & (a <  81.75)].size / float(a.size)

アップデート:

In [6]: a = np.random.randint(1, 110, 1000000)
In [7]: %%timeit
        percentileofscore(a, 81.75) - percentileofscore(a, 54.5)
1 loops, best of 3: 373 ms per loop
In [8]: %%timeit
        a[(a > 54.5) & (a <  81.75)].size / float(a.size)
10 loops, best of 3: 20.5 ms per loop

それpercentileofscoreはずっと遅いようです。

于 2013-08-23T10:02:49.507 に答える
0

私はあなたが探していると思いますscipy.stats.percentileofscore

percentileofscore(a, 54.5) == 50.
percentileofscore(a, 81.75) == 75.

これらを差し引くと 25 になります (54.5 から 81.75 までのスコアのパーセンテージ)。

これは、マップを使用して np.percentile を反転し、シフトと減算を適用して、「間隔内の配列のパーセンテージ」を取得できることを意味します。

于 2013-08-23T10:14:39.747 に答える