TypeError: only integer scalar arrays can be converted to a scalar index
Tags: python, programming, codenewbie, tutorial
Published: 2021-09-08 15:34:26

---
title: TypeError: only integer scalar arrays can be converted to a scalar index
published: true
date: 2021-09-07 16:33:56 UTC
tags: #python #programming #codenewbie #tutorial
canonical_url: https://itsmycode.com/typeerror-only-integer-scalar-arrays-can-be-converted-to-a-scalar-index/
---

ItsMyCode |

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.

```python 
# 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.

```python 
# 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.

```python 
# 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.

```python 
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.

```python 
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)])
```

The post [TypeError: only integer scalar arrays can be converted to a scalar index](https://itsmycode.com/typeerror-only-integer-scalar-arrays-can-be-converted-to-a-scalar-index/) appeared first on [ItsMyCode](https://itsmycode.com).