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 salida es -5
Encuentro que train
no es igual a train2
cuando hay algunas tuplas duplicadas en tmp
. ¿Hay algo de malo en rebanar numpy?
Lo mismo para ti.
Sabe que está intentando escribir en la "misma posición" dos veces, por ejemplo [1, 2]
. Desafortunadamente (o afortunadamente, según el punto de vista) eso no funciona.
Pero puede usar np.add.at
que de acuerdo con los documentos "Para la adición de ufunc, este método es equivalente a a [índices] + = b, excepto que los resultados se acumulan para los elementos que están indexados más de una vez":
train = np.zeros([26,26])
np.add.at(train, [tmp[:-1], tmp[1:]], 1)
¡Gracias!
Comentario más útil
Sabe que está intentando escribir en la "misma posición" dos veces, por ejemplo
[1, 2]
. Desafortunadamente (o afortunadamente, según el punto de vista) eso no funciona.Pero puede usar
np.add.at
que de acuerdo con los documentos "Para la adición de ufunc, este método es equivalente a a [índices] + = b, excepto que los resultados se acumulan para los elementos que están indexados más de una vez":