Python numpy throws the **typeerror: only integer scalar arrays can be converted to a scalar index**, when an ordinary list is indexed with scalar index. Generally, its possible with numpy arrays.

Consider this code –

```
>>> ordinary_list = list(range(2000))
>>> indices = np.random.choice(range(len(ordinary_list)), replace=False, size=500)
>>> print(ordinary_list[indices.astype(int)])
```

It will throw the integer scalar arrays can only be converted to scalar index error. This is because `ordinary_list`

is not a numpy array but we are indexing it with `np.random.choice`

index. Here `indices`

is not a single index else its an array of 500 values. In simple words, you need to first convert the list to numpy array and then do the indexing operation. So, this code could be written like this –

```
>>> ordinary_list = list(range(2000))
>>> indices = np.random.choice(range(len(ordinary_list)), replace=False, size=500)
>>> print(np.array(ordinary_list)[indices.astype(int)])
```

The same error also occurs when we try to use numpy `concatenate`

method. Here we need to pass the arrays as tuple. So, this code is wrong –

```
>>> identity_matrix = np.eye(2)
>>> np.concatenate(identity_matrix, identity_matrix)
```

The correct way of using concatenate is –

```
>>> identity_matrix = np.eye(2)
>>> np.concatenate((identity_matrix, identity_matrix))
array([[1., 0.],
[0., 1.],
[1., 0.],
[0., 1.]])
```

Some other examples where scalar index error could appear are –

```
>>> superhero = ["Ironman", "Hulk", "Thor"]
>>> np_array_index_1 = np.array([1])
>>> print(superhero[np_array_index_1])
TypeError: only integer scalar arrays can be converted to a scalar index
```

These examples will work fine –

```
>>> superhero = ["Ironman", "Hulk", "Thor"]
>>> np_index_1 = np.array(1) # it is a simple number 1
>>> print(superhero[np_index_1])
Hulk
```

```
>>> superhero = ["Ironman", "Hulk", "Thor"]
>>> np_index_2 = np.array([2]).item()
>>> print(superhero[np_index_2])
Thor
```

```
>>> np_superhero = np.array(["Ironman", "Hulk", "Thor"])
>>> np_array_index_1 = np.array([1])
>>> print(np_superhero[np_array_index_1])
array(['Hulk'])
```

## Live Demo

Demo might not work in private window (incognito)

## Comments