Numpy: Um novo BUG tremandous em Indexação Avançada?

Criado em 30 mar. 2017  ·  3Comentários  ·  Fonte: numpy/numpy

Este é um BUG

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.

53 - Invalid

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

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

Todos 3 comentários

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!

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

kevinzhai80 picture kevinzhai80  ·  4Comentários

qualiaa picture qualiaa  ·  3Comentários

inducer picture inducer  ·  3Comentários

dcsaba89 picture dcsaba89  ·  3Comentários

Kreol64 picture Kreol64  ·  3Comentários