Numpy array : corriger l'erreur TypeError: only integer scalar arrays can be converted to a scalar index with 1D ?
Le langage Python est un langage extrêmement riche, qui a beaucoup évolué au fil de son histoire. La version 3 du langage a changé tellement de choses qu'elle n'est pas compatible avec la version 2 du langage. Les 2 versions ont ainsi cohabité pendant plusieurs années. De plus, on peut également ajouter des librairies qui enrichissent le langage, mais nécessitent de nouvelles connaissances. Le message d'erreur "TypeError: only integer scalar arrays can be converted to a scalar index", bien que peu clair, résulte d'une erreur de manipulation.
Lorsque vous utilisez une liste dans le langage Python, celle-ci ne fonctionne pas comme un tableau. Vous pouvez la parcourir avec l'instruction "for… in". Vous ne pouvez pas utiliser directement des crochets, car ce n'est pas un tableau. Si vous le faites, vous obtiendrez le message d'erreur "TypeError: only integer scalar arrays can be converted to a scalar index". Ce qui est important dans ce message, c'est la première partie : "TypeError". En Python, ce type d'erreur se produit lorsque vous appliquez une opération sur un objet qui n'est pas du bon type. Pour résoudre ce problème, vous devez convertir la liste en un tableau. Pour cela, nous vous conseillons de faire appel à la librairie NumPy : https://numpy.org/. Cette librairie fournit différentes fonctions pour manipuler les tableaux. La fonction "array()" permet de convertir une liste en tableau.
maListe = range(0, 4) //Parcours d'une liste >>> [elem for elem in maListe] [0, 1, 2, 3] //Renvoie un message d'erreur >>> maListe[1] TypeError: only integer scalar arrays can be converted to a scalar index //Conversion de la liste en tableau pour accéder à la colonne >>> import numpy as np >>> np.array(maListe)[1] 1
Cette erreur peut également se produire dans l'utilisation d'une fonction de la librairie NumPy : "concatenate()". Cette fonction concatène 2 tableaux selon un axe, par défaut la première dimension des tableaux. Mais attention, elle prend en paramètre un tuple composé d'au moins 2 tableaux. Si vous essayez de l'appeler avec 2 tableaux en paramètre, alors vous obtiendrez le message d'erreur "Numpy array : corriger l'erreur TypeError: only integer scalar arrays can be converted to a scalar index".
>>> tableau1 = np.array([[1, 2], [3, 4]]) >>> tableau2 = np.array([[5, 6]]) # Si les 2 tableaux sont directement en paramètre, on obtient une erreur >>> np.concatenate(tableau1, tableau2) TypeError: only integer scalar arrays can be converted to a scalar index # La fonction accepte un tuple avec les tableaux dedans >>> np.concatenate((tableau1, tableau2)) array([[1, 2], [3, 4], [5, 6]])