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))
a saída é -5
Acho que train
não é igual a train2
quando há algumas tuplas duplicadas em tmp
. Há algo de errado em fatiar entorpecido.
O mesmo pra você.
Você sabe que está tentando escrever na "mesma posição" duas vezes, por exemplo [1, 2]
. Infelizmente (ou felizmente, dependendo do ponto de vista) isso não funciona.
Mas você pode usar np.add.at
que de acordo com a documentação "Para adição ufunc, este método é equivalente a a [índices] + = b, exceto que os resultados são acumulados para elementos que são indexados mais de uma vez.":
train = np.zeros([26,26])
np.add.at(train, [tmp[:-1], tmp[1:]], 1)
Obrigado!
Comentários muito úteis
Você sabe que está tentando escrever na "mesma posição" duas vezes, por exemplo
[1, 2]
. Infelizmente (ou felizmente, dependendo do ponto de vista) isso não funciona.Mas você pode usar
np.add.at
que de acordo com a documentação "Para adição ufunc, este método é equivalente a a [índices] + = b, exceto que os resultados são acumulados para elementos que são indexados mais de uma vez.":