Comment corriger l'erreur TypeError: only integer scalar arrays can be converted to a scalar index ?

L'extension NumPy apporte des fonctionnalités supplémentaires au langage Python. On peut par exemple créer et manipuler des tableaux multidimensionnels ou des matrices de données. C'est une extension très utilisée par des librairies destinées aux calculs scientifiques. Le message d'erreur "TypeError: only integer scalar arrays can be converted to a scalar index" apparaît lorsqu'on fait une erreur dans la notation des directives pour gérer les tableaux multidimensionnels.

Lorsque vous créez plusieurs tableaux multidimensionnels, vous devez être attentifs à la manière dont vous interagissez avec. Voici deux tableaux multidimensionnels. Le premier contient les index qui seront utilisés pour manipuler le deuxième tableau.

tabIndex = np.arange(1,4,dtype=np.int)
tabIndex
array([1, 2, 3])
monTableau = np.arange(9).reshape(3,3)
monTableau
array([[0, 1, 2],
          [3, 4, 5],
          [6, 7, 8]])

Si vous souhaitez afficher ces deux tableaux ensemble, sachez que la notation suivante ne fonctionne pas. Elle affichera le message d'erreur indiqué plus haut.

monTableau[:,0:tabIndex]

La raison de ce message est que cette opération n'est pas vectorisable. Une opération est vectorisable si elle peut être appliquée sur des tableaux entiers.

Pour imprimer les tableaux, il faut parcourir le tableau "monTableau" à l'aide du tableau "tabIndex". Il faut pour cela utiliser une boucle avec l'opérateur "for" pour parcourir le tableau "tabIndex" et, avec la valeur extraite, parcourir le tableau "monTableau". Cette opération peut être réalisée avec une seule directive.

[monTableau[:,:element] for element in tabIndex]

Python