def _words_by_score(words, score, least_to_most, n=None):
    """
    Order a vector of `words` by a `score`, either `least_to_most` or reverse. Optionally return only the top `n`
    results.
    """
    if words.shape != score.shape:
        raise ValueError('`words` and `score` must have the same shape')

    if n is not None and (n <= 0 or n > len(words)):
        raise ValueError('`n` must be in range [0, len(words)]')

    indices = np.argsort(score)
    if not least_to_most:
        indices = indices[::-1]

    ordered_words = words[indices]

    if n is not None:
        return ordered_words[:n]
    else:
        return ordered_words
def _words_by_score ( words , score , least_to_most , n = None ) : if words . shape != score . shape : raise ValueError ( '`words` and `score` must have the same shape' ) if n is not None and ( n <= 0 or n > len ( words ) ) : raise ValueError ( '`n` must be in range [0, len(words)]' ) indices = np . argsort ( score ) if not least_to_most : indices = indices [ : : - 1 ] ordered_words = words [ indices ] if n is not None : return ordered_words [ : n ] else : return ordered_words
Order a vector of `words` by a `score`, either `least_to_most` or reverse. Optionally return only the top `n`
    results.