Comment réparer : seuls les tableaux scalaires entiers peuvent être convertis en index scalaire



Une erreur que vous pouvez rencontrer lors de l’utilisation de Python est :

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

Cette erreur se produit généralement pour l’une des deux raisons suivantes :

1. Vous avez tenté d’effectuer une indexation de tableau sur une liste.

2. Vous avez tenté de concaténer deux matrices en utilisant une syntaxe incorrecte.

Les exemples suivants montrent comment éviter ces erreurs dans les deux scénarios.

Exemple 1 : vous avez tenté d’effectuer une indexation de tableau sur une liste.

Supposons que nous essayions d’utiliser le code suivant pour créer un graphique linéaire dans matplotlib avec une légende et des étiquettes :

import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np.random.choice(range(len(data)), size=2)

#attempt to use indexing to access elements in list
random_vals = data[random_values.astype(int)]

#view results
random_vals

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

Nous recevons une erreur car nous avons tenté d’utiliser l’indexation de tableau sur une liste.

Pour éviter cette erreur, nous devons d’abord convertir la liste en tableau NumPy en utilisant np.array() comme suit :

import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np.random.choice(range(len(data)), size=2)

#attempt to use indexing to access elements in list
random_vals = np.array(data)[random_values.astype(int)]

#view results
random_vals

array([5, 7])

Cette fois, nous pouvons sélectionner aléatoirement deux valeurs dans la liste sans aucune erreur puisque nous avons d’abord converti la liste en tableau NumPy.

Exemple 2 : vous avez tenté de concaténer deux matrices en utilisant une syntaxe incorrecte.

Supposons que nous essayions d’utiliser le code suivant pour concaténer deux matrices NumPy :

import numpy as np

#create twoNumPy matrices
mat1 = np.matrix([[3, 5], [5, 7]])
mat2 = np.matrix([[2, 4], [1, 8]])

#attempt to concatenate both matrices
np.concatenate(mat1, mat2)

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

Nous recevons une erreur car nous n’avons pas réussi à fournir les matrices sous forme de tuple à la fonction concatenate() .

Pour éviter cette erreur, il faut utiliser des doubles parenthèses pour fournir les matrices sous forme de tuple à la fonction concatenate() comme suit :

import numpy as np

#create twoNumPy matrices
mat1 = np.matrix([[3, 5], [5, 7]])
mat2 = np.matrix([[2, 4], [1, 8]])

#attempt to concatenate both matrices
np.concatenate((mat1, mat2))

matrix([[3, 5],
        [5, 7],
        [2, 4],
        [1, 8]])

Cette fois, nous parvenons à concaténer les deux matrices sans aucune erreur.

Ressources additionnelles

Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes en Python :

Comment réparer KeyError dans Pandas
Comment réparer : ValueError : impossible de convertir le float NaN en entier
Comment réparer : ValueError : les opérandes n’ont pas pu être diffusés avec les formes

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *