Numpy: Un nouveau BUG énorme dans l'indexation avancée ?

Créé le 30 mars 2017  ·  3Commentaires  ·  Source: numpy/numpy

C'est un BOGUE

train = np.zeros([26,26])
train2 = np.zeros([26,26])
tmp = [1,2,3,4,5,6,1,2,3,4,5,6]
train[tmp[0:-1], tmp[1:]] += 1
for i in range(len(tmp)-1):
    train2[tmp[i], tmp[i+1]] += 1
print(np.sum(train - train2))

la sortie est -5
Je trouve que train n'est pas égal à train2 lorsqu'il y a des tuples en double dans tmp . Y a-t-il quelque chose qui ne va pas dans le tranchage numpy.

53 - Invalid

Commentaire le plus utile

Vous savez que vous essayez d'écrire à la "même position" deux fois, par exemple [1, 2] . Malheureusement (ou heureusement, selon le point de vue) cela ne fonctionne pas.

Mais vous pouvez utiliser np.add.at qui selon la doc "Pour l'addition ufunc, cette méthode est équivalente à a[indices] += b, sauf que les résultats sont cumulés pour les éléments qui sont indexés plus d'une fois." :

train = np.zeros([26,26])
np.add.at(train, [tmp[:-1], tmp[1:]], 1)

Tous les 3 commentaires

Je vous souhaite la même chose.

Vous savez que vous essayez d'écrire à la "même position" deux fois, par exemple [1, 2] . Malheureusement (ou heureusement, selon le point de vue) cela ne fonctionne pas.

Mais vous pouvez utiliser np.add.at qui selon la doc "Pour l'addition ufunc, cette méthode est équivalente à a[indices] += b, sauf que les résultats sont cumulés pour les éléments qui sont indexés plus d'une fois." :

train = np.zeros([26,26])
np.add.at(train, [tmp[:-1], tmp[1:]], 1)

Merci!

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Foadsf picture Foadsf  ·  3Commentaires

MareinK picture MareinK  ·  3Commentaires

astrofrog picture astrofrog  ·  4Commentaires

marcocaccin picture marcocaccin  ·  4Commentaires

perezpaya picture perezpaya  ·  4Commentaires