def all_points_membership_vectors(clusterer):
    "Predict soft cluster membership vectors for all points in the\n    original dataset the clusterer was trained on. This function is more\n    efficient by making use of the fact that all points are already in the\n    condensed tree, and processing in bulk.\n\n    Parameters\n    ----------\n    clusterer : HDBSCAN\n         A clustering object that has been fit to the data and\n        either had ``prediction_data=True`` set, or called the\n        ``generate_prediction_data`` method after the fact.\n        This method does not work if the clusterer was trained\n        with ``metric='precomputed'``.\n\n    Returns\n    -------\n    membership_vectors : array (n_samples, n_clusters)\n        The probability that point ``i`` of the original dataset is a member of\n        cluster ``j`` is in ``membership_vectors[i, j]``.\n\n    See Also\n    --------\n    :py:func:`hdbscan.predict.predict`\n    :py:func:`hdbscan.predict.all_points_membership_vectors`\n    "
    clusters = np.array(sorted(list(clusterer.condensed_tree_._select_clusters()))).astype(np.intp)
    all_points = clusterer.prediction_data_.raw_data
    if (clusters.size == 0):
        return np.zeros(all_points.shape[0])
    distance_vecs = all_points_dist_membership_vector(all_points, clusterer.prediction_data_.exemplars, clusterer.prediction_data_.dist_metric)
    outlier_vecs = all_points_outlier_membership_vector(clusters, clusterer.condensed_tree_._raw_tree, clusterer.prediction_data_.leaf_max_lambdas, clusterer.prediction_data_.cluster_tree)
    in_cluster_probs = all_points_prob_in_some_cluster(clusters, clusterer.condensed_tree_._raw_tree, clusterer.prediction_data_.leaf_max_lambdas, clusterer.prediction_data_.cluster_tree)
    result = (distance_vecs * outlier_vecs)
    row_sums = result.sum(axis=1)
    result = (result / row_sums[:, np.newaxis])
    result *= in_cluster_probs[:, np.newaxis]
    return result
Predict soft cluster membership vectors for all points in the
original dataset the clusterer was trained on. This function is more
efficient by making use of the fact that all points are already in the
condensed tree, and processing in bulk.

Parameters
----------
clusterer : HDBSCAN
     A clustering object that has been fit to the data and
    either had ``prediction_data=True`` set, or called the
    ``generate_prediction_data`` method after the fact.
    This method does not work if the clusterer was trained
    with ``metric='precomputed'``.

Returns
-------
membership_vectors : array (n_samples, n_clusters)
    The probability that point ``i`` of the original dataset is a member of
    cluster ``j`` is in ``membership_vectors[i, j]``.

See Also
--------
:py:func:`hdbscan.predict.predict`
:py:func:`hdbscan.predict.all_points_membership_vectors`
def all_points_membership_vectors(clusterer):
    "Predict soft cluster membership vectors for all points in the\n    original dataset the clusterer was trained on. This function is more\n    efficient by making use of the fact that all points are already in the\n    condensed tree, and processing in bulk.\n\n    Parameters\n    ----------\n    clusterer : HDBSCAN\n         A clustering object that has been fit to the data and\n        either had ``prediction_data=True`` set, or called the\n        ``generate_prediction_data`` method after the fact.\n        This method does not work if the clusterer was trained\n        with ``metric='precomputed'``.\n\n    Returns\n    -------\n    membership_vectors : array (n_samples, n_clusters)\n        The probability that point ``i`` of the original dataset is a member of\n        cluster ``j`` is in ``membership_vectors[i, j]``.\n\n    See Also\n    --------\n    :py:func:`hdbscan.predict.predict`\n    :py:func:`hdbscan.predict.all_points_membership_vectors`\n    "
    clusters = np.array(sorted(list(clusterer.condensed_tree_._select_clusters()))).astype(np.intp)
    all_points = clusterer.prediction_data_.raw_data
    if (clusters.size == 0):
        return np.zeros(all_points.shape[0])
    distance_vecs = all_points_dist_membership_vector(all_points, clusterer.prediction_data_.exemplars, clusterer.prediction_data_.dist_metric)
    outlier_vecs = all_points_outlier_membership_vector(clusters, clusterer.condensed_tree_._raw_tree, clusterer.prediction_data_.leaf_max_lambdas, clusterer.prediction_data_.cluster_tree)
    in_cluster_probs = all_points_prob_in_some_cluster(clusters, clusterer.condensed_tree_._raw_tree, clusterer.prediction_data_.leaf_max_lambdas, clusterer.prediction_data_.cluster_tree)
    result = (distance_vecs * outlier_vecs)
    row_sums = result.sum(axis=1)
    result = (result / row_sums[:, np.newaxis])
    result *= in_cluster_probs[:, np.newaxis]
    return result