TypeError: only integer scalar arrays can be converted to a scalar index with 1D numpy indices array TypeError: only integer scalar arrays can be converted to a scalar index with 1D numpy indices array numpy numpy

TypeError: only integer scalar arrays can be converted to a scalar index with 1D numpy indices array


Perhaps the error message is somewhat misleading, but the gist is that X_train is a list, not a numpy array. You cannot use array indexing on it. Make it an array first:

out_images = np.array(X_train)[indices.astype(int)]


I get this error whenever I use np.concatenate the wrong way:

>>> a = np.eye(2)>>> np.concatenate(a, a)Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "<__array_function__ internals>", line 6, in concatenateTypeError: only integer scalar arrays can be converted to a scalar index

The correct way is to input the two arrays as a tuple:

>>> np.concatenate((a, a))array([[1., 0.],       [0., 1.],       [1., 0.],       [0., 1.]])


A simple case that generates this error message:

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

Some variations that work:

In [9]: [1,2,3,4,5][np.array(1)]     # this is a 0d array indexOut[9]: 2In [10]: [1,2,3,4,5][np.array([1]).item()]    Out[10]: 2In [11]: np.array([1,2,3,4,5])[np.array([1])]Out[11]: array([2])

Basic python list indexing is more restrictive than numpy's:

In [12]: [1,2,3,4,5][[1]]....TypeError: list indices must be integers or slices, not list

edit

Looking again at

indices = np.random.choice(range(len(X_train)), replace=False, size=50000, p=train_probs)

indices is a 1d array of integers - but it certainly isn't scalar. It's an array of 50000 integers. List's cannot be indexed with multiple indices at once, regardless of whether they are in a list or array.