2017-08-14 2 views
0

J'ai un tableau avec N points (positifs). Je voudrais trouver M bords de bin d'un histogramme de sorte que toutes les barres ont la même hauteur. En d'autres termes, je veux trouver M + 1 points tels que le nombre de points de tableau entre deux bords bin consécutifs soit le même.Mettez N points dans M cases égal

Exemple

>>> array = [0.3 0.3 0.3 0.7 0.8 0.9] 
>>> M = 2 
>>> binPartition(array, M) 
[0, 0.5, 1] 

Je vous serais reconnaissant une réponse en python et numpy mais un lien vers un algorithme connu suffira! Je vous remercie! :)

+0

Une demande d'écriture de code d'un utilisateur avec presque 3k représentant? –

+0

@EugeneSh. Un lien vers un algortithme aurait été suffisant :) – Ant

+1

Vous devriez savoir que ce serait aussi bien OT –

Répondre

1

Que peut être fait avec percentile:

import numpy as np 

def binPartition(array, M): 
    return np.percentile(array, np.linspace(0, 100, M + 1)) 

binPartition([0.3, 0.3, 0.3, 0.7, 0.8, 0.9], 2) 
>>> array([ 0.3, 0.5, 0.9]) 
+0

Merci. Je devais avoir un pet de cerveau, je demandais la fonction percentile: D – Ant