> np.random.choice(n_classes, n, replace=False, p=p_c) is apparently the answer; New in version 1.7.0.

It seems that some testing modules already use choice
```
sklearn/datasets/tests/test_lfw.py:            name = random_state.choice(more_than_two)
sklearn/datasets/tests/test_lfw.py:            first_index = random_state.choice(np.arange(counts[first_name]))
sklearn/datasets/tests/test_lfw.py:            second_index = random_state.choice(np.arange(counts[second_name]))
sklearn/neighbors/tests/test_kde.py:def test_kde_algorithm_metric_choice():
```