tableau numpy TypeError: entiers scalaires tableaux peuvent être convertis à un scalaire index
i=np.arange(1,4,dtype=np.int)
a=np.arange(9).reshape(3,3)
et
a
>>>array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
a[:,0:1]
>>>array([[0],
[3],
[6]])
a[:,0:2]
>>>array([[0, 1],
[3, 4],
[6, 7]])
a[:,0:3]
>>>array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
Maintenant je veux vectoriser le tableau à imprimer l'ensemble. J'essaie
a[:,0:i]
ou
a[:,0:i[:,None]]
Il donne TypeError: entiers scalaires tableaux peuvent être convertis à un scalaire indice
Voir ma question connexe pour une autre cause de cette erreur.
OriginalL'auteur kinder chen | 2017-10-24
Vous devez vous connecter pour publier un commentaire.
Réponse courte:
Ce que vous essayez de faire est de pas un vectorizable opération. Wikipedia définit vectorisation comme une opération de traitement sur un seul tableau, plutôt que sur la personne scalaires:
En termes de CPU au niveau de l'optimisation, de la définition de la vectorisation est:
Le problème avec votre cas est que le résultat de chaque opération a un forme différente:
(3, 1)
,(3, 2)
et(3, 3)
. Ils ne peuvent pas former la sortie d'un seul vectorisé opération, parce que la sortie doit être contigu tableau. Bien sûr, il peut contenir(3, 1)
,(3, 2)
et(3, 3)
tableaux à l'intérieur d'elle (comme points de vue), mais c'est ce que le tableau d'originea
déjà fait.Ce que vous êtes vraiment à la recherche pour juste une seule expression qui calcule tous:
... mais c'est pas vectorisé dans le sens d'une optimisation des performances. Sous le capot, c'est un bon vieux
for
boucle qui calcule à chaque élément un par un.Ne peux pas vous dire ho je suis reconnaissant, je vous remercie. Sauvé mes jours
OriginalL'auteur Maxim
essayez la procédure suivante pour modifier votre tableau 1D
OriginalL'auteur WIND.Knight
Vous pouvez utiliser numpy.ravel pour revenir aplatie tableau de n-dimensions tableau:
OriginalL'auteur Andre Araujo
Cela pourrait être sans rapport avec ce problème, mais j'ai rencontré un problème similaire où j'ai utilisé de NumPy indexation sur une liste Python et j'ai obtenu le même message d'erreur exact:
Il s'avère que j'ai besoin de tourner
weights
, 1D liste Python, dans un tableau NumPy avant que je puisse appliquer multi-dimensionnelle NumPy d'indexation. Le code ci-dessous fonctionne:OriginalL'auteur Zhanwen Chen