Ho una matrice di probabilità di elementi, diciamo [0.1, 0.2, 0.5, 0.2]
. L'array riassume fino a 1.0.disegna elemento casuale in numpy
Usare Python normale o NumPy, voglio disegnare elementi proporzionali alla loro probabilità: il primo elemento circa il 10% del tempo, secondo 20%, 50% terzo ecc Il "tracciare" deve restituire indice dell'elemento disegnato .
sono arrivato fino a questo:
def draw(probs):
cumsum = numpy.cumsum(probs/sum(probs)) # sum up to 1.0, just in case
return len(numpy.where(numpy.random.rand() >= cumsum)[0])
Funziona, ma è troppo complicata, ci deve essere un modo migliore. Grazie.