Numpy: ¿Un nuevo ERROR tremendo en la indexación avanzada?

Creado en 30 mar. 2017  ·  3Comentarios  ·  Fuente: numpy/numpy

Esto es un error

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?

53 - Invalid

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

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

Todos 3 comentarios

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!

¿Fue útil esta página
0 / 5 - 0 calificaciones