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))
die Ausgabe ist -5
Ich finde, dass train
nicht gleich train2
wenn es einige doppelte Tupel in tmp
. Stimmt etwas nicht mit numpy Slicing.
Ebenfalls.
Sie wissen, dass Sie zweimal versuchen, an die "gleiche Position" zu schreiben, zum Beispiel [1, 2]
. Leider (oder zum Glück, je nach Sichtweise) funktioniert das nicht.
Aber Sie können np.add.at
was laut den Dokumenten "Für die Addition von ufunc ist diese Methode äquivalent zu a[indices] += b, außer dass Ergebnisse für Elemente akkumuliert werden, die mehr als einmal indiziert sind.":
train = np.zeros([26,26])
np.add.at(train, [tmp[:-1], tmp[1:]], 1)
Vielen Dank!
Hilfreichster Kommentar
Sie wissen, dass Sie zweimal versuchen, an die "gleiche Position" zu schreiben, zum Beispiel
[1, 2]
. Leider (oder zum Glück, je nach Sichtweise) funktioniert das nicht.Aber Sie können
np.add.at
was laut den Dokumenten "Für die Addition von ufunc ist diese Methode äquivalent zu a[indices] += b, außer dass Ergebnisse für Elemente akkumuliert werden, die mehr als einmal indiziert sind.":