Поскольку values
было создано с выражением int(w)*10
, все значения кратны 10. Это означает, что большинство значений повторяется много раз. Например, я просто запустил этот код и обнаружил, что значение 30 повторялось 119 раз. Оказывается, что при подсчете значений межквантовый интервал 20% - 30% содержит только значение 30. Поэтому значения 30 повторяются в вашем выводе.
Я могу разбить мой набор данных как
value #
0 14
10 72
20 100
30 119
40 152
etc.
Разбить это на группы по 100 (так как у вас есть 1000 значений, и вы смотрите на 10%, 20% и т. д. c).
np.percentile
Percent Group Values (counts) (largest value in previous column)
------- --------- ------------------------ ----------------------------------
10 0 - 99 0 (14), 10 (72), 20 (16) 20
20 100 - 199 20 (84), 30 (16) 30
30 200 - 299 30 (100) 30
40 300 - 399 30 (3), 40 (97) 40
etc.
Учитывая используемый вами дистрибутив, этот вывод представляется наиболее вероятным, но если вы перезапустите код достаточно много раз, вы увидите другой вывод. Я просто запустил его снова и получил
10 20.0
20 20.0
30 30.0
40 40.0
50 50.0
60 50.0
70 60.0
80 80.0
90 100.0
100 210.0
Обратите внимание, что и 20,0, и 50,0 повторяются. Количество значений для этого прогона:
In [56]: values, counts = np.unique(values, return_counts=True)
In [57]: values
Out[57]:
array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120,
130, 140, 150, 160, 170, 180, 190, 210])
In [58]: counts
Out[58]:
array([ 14, 73, 129, 134, 134, 119, 105, 67, 73, 33, 41, 21, 19,
16, 8, 7, 1, 2, 2, 1, 1])