Un caso simple que genera este mensaje de error:
In [8]: [1,2,3,4,5][np.array([1])]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-55def8e1923d> in <module>()
----> 1 [1,2,3,4,5][np.array([1])]
TypeError: only integer scalar arrays can be converted to a scalar index
Algunas variaciones que funcionan:
In [9]: [1,2,3,4,5][np.array(1)] # this is a 0d array index
Out[9]: 2
In [10]: [1,2,3,4,5][np.array([1]).item()]
Out[10]: 2
In [11]: np.array([1,2,3,4,5])[np.array([1])]
Out[11]: array([2])
La indexación básica de la lista de Python es más restrictiva que la de Numpy:
In [12]: [1,2,3,4,5][[1]]
....
TypeError: list indices must be integers or slices, not list
editar
Mirando de nuevo a
indices = np.random.choice(range(len(X_train)), replace=False, size=50000, p=train_probs)
indices
es una matriz 1d de enteros, pero ciertamente no es escalar. Es una matriz de 50000 enteros. Las listas no se pueden indexar con varios índices a la vez, independientemente de si están en una lista o en una matriz.