TypeError: only integer scalar arrays can be converted to a scalar index

Python numpy throws typeerror: only integer scalar arrays can be converted to a scalar index when you try to convert the ordinary array into a scalar index. The other cause might be when you try to concatenate and don’t pass Tuple or list for concatenation.

How to Fix only integer scalar arrays can be converted to a scalar index error?

Let’s consider the below code where we try to concatenate two arrays of the same type using numpy.concatenate() function.

# import numpy
import numpy

# Create 2 different arrays
ar1 = numpy.array(['Apple', 'Orange', 'Banana', 'Pineapple', 'Grapes'])
ar2 = numpy.array(['Onion', 'Potato'])

# Concatenate array ar1 & ar2 using numpy.concatenate()
ar3 = numpy.concatenate(ar1, ar2)
print(ar3)

# Output
Traceback (most recent call last):
  File "c:\Projects\Tryouts\listindexerror.py", line 9, in <module>
    ar3 = numpy.concatenate(ar1, ar1)
  File "<__array_function__ internals>", line 5, in concatenate
TypeError: only integer scalar arrays can be converted to a scalar index

By default, numpy can concatenate row-wise, and it requires either Tuple or list to concatenate. Since we are not passing either of them, Python will throw TypeError only integer scalar arrays can be converted to a scalar index.

There are two possible ways to fix the above issue.

Solution 1 – Concatenate array by list

If you look at the below example, we have converted array 1 and array 2 to List inside the numpy.concatenate() method. All you need to do is enclose array 1 and array 2 inside the square brackets.

# import numpy
import numpy

# Create 2 different arrays
ar1 = numpy.array(['Apple', 'Orange', 'Banana', 'Pineapple', 'Grapes'])
ar2 = numpy.array(['Onion', 'Potato'])

# Concatenate array ar1 & ar2 using numpy.concatenate()
ar3 = numpy.concatenate([ar1, ar2])
print(ar3)

# Output
['Apple' 'Orange' 'Banana' 'Pineapple' 'Grapes' 'Onion' 'Potato']

Solution 2 – Concatenate array by Tuple

If you look at the below example, we have converted array 1 and array 2 to Tuple inside the numpy.concatenate() method.

# import numpy
import numpy

# Create 2 different arrays
ar1 = numpy.array(['Apple', 'Orange', 'Banana', 'Pineapple', 'Grapes'])
ar2 = numpy.array(['Onion', 'Potato'])

# Concatenate array ar1 & ar2 using numpy.concatenate()
ar3 = numpy.concatenate((ar1, ar2))
print(ar3)

# Output
['Apple' 'Orange' 'Banana' 'Pineapple' 'Grapes' 'Onion' 'Potato']

The other possible reason you get the same error is when an ordinary list is indexed with a scalar index.

Example 

If you look at the below code, we pass the plain array and then perform the indexing operation where Python throws a type error.

import numpy as np
somelist = list(range(1000))
indices = np.random.choice(range(len(somelist)), replace=False, size=500)
print(somelist[indices.astype(int)])

# Output
Traceback (most recent call last):
  File "c:\Projects\Tryouts\listindexerror.py", line 4, in <module>
    print(somelist[indices.astype(int)])
TypeError: only integer scalar arrays can be converted to a scalar index

To fix the issue, you need to convert the ordinary error into a numpy array and then do the indexing operation below.

import numpy as np
somelist = list(range(1000))
indices = np.random.choice(range(len(somelist)), replace=False, size=500)
print(np.array(somelist)[indices.astype(int)])
Leave a Reply

Your email address will not be published.

Sign Up for Our Newsletters

Get notified of the best deals on our WordPress themes.

You May Also Like
List Of Python Free Ebooks

List of Free Python Books

Table of Contents Hide Python SuccinctlyPython Data Science HandbookThink Python 2nd EditionAutomate the Boring Stuff with PythonMaking Games with Python & PygameData Structures and Algorithms in Python Google Python Style GuideA…
View Post
Importerror No Module Named Pandas

ImportError: No module named Pandas

In Python, if you try to import pandas without installing the module using pip, you will get ImportError: no module named pandas error.  In this tutorial, let’s look at installing…
View Post
Convert String To Float In Python

Convert String to Float in Python

Table of Contents Hide Convert string to float in Pythonfloat() functionExample 1 – Convert string to floatExample 2 – Default float conversion without any input parameterExample 3 – Convert a…
View Post