TypeError: only integer scalar arrays can be converted to a scalar index with 1D numpy indices array
--------------------------------------------------
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Breezy Bay
--
Chapters
00:00 Typeerror: Only Integer Scalar Arrays Can Be Converted To A Scalar Index With 1d Numpy Indices Array
00:57 Accepted Answer Score 288
01:16 Answer 2 Score 12
02:09 Answer 3 Score 193
02:30 Answer 4 Score 1
02:45 Thank you
--
Full question
https://stackoverflow.com/questions/5099...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #python3x #numpy
#avk47
    Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Breezy Bay
--
Chapters
00:00 Typeerror: Only Integer Scalar Arrays Can Be Converted To A Scalar Index With 1d Numpy Indices Array
00:57 Accepted Answer Score 288
01:16 Answer 2 Score 12
02:09 Answer 3 Score 193
02:30 Answer 4 Score 1
02:45 Thank you
--
Full question
https://stackoverflow.com/questions/5099...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #python3x #numpy
#avk47
ACCEPTED ANSWER
Score 288
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)]
ANSWER 2
Score 193
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 concatenate
TypeError: 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.]])
ANSWER 3
Score 12
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 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])
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.
ANSWER 4
Score 1
Another case that could cause this error is
>>> np.ndindex(np.random.rand(60,60))
TypeError: only integer scalar arrays can be converted to a scalar index
Using the actual shape will fix it.
>>> np.ndindex(np.random.rand(60,60).shape)
<numpy.ndindex object at 0x000001B887A98880>