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.
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!
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." :