Numpy: Новая опасная ОШИБКА в расширенном индексировании?

Созданный на 30 мар. 2017  ·  3Комментарии  ·  Источник: numpy/numpy

Это ОШИБКА

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))

выход -5
Я обнаружил, что train не равно train2 когда в tmp есть несколько повторяющихся кортежей. Что-то не так с нарезкой numpy.

53 - Invalid

Самый полезный комментарий

Вы знаете, что дважды пытаетесь записать в «одну и ту же позицию», например [1, 2] . К сожалению (или к счастью, в зависимости от точки зрения) это не работает.

Но вы можете использовать np.add.at который в соответствии с документами «Для добавления ufunc этот метод эквивалентен a [index] + = b, за исключением того, что результаты накапливаются для элементов, которые проиндексированы более одного раза.»:

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

Все 3 Комментарий

И вам того же.

Вы знаете, что дважды пытаетесь записать в «одну и ту же позицию», например [1, 2] . К сожалению (или к счастью, в зависимости от точки зрения) это не работает.

Но вы можете использовать np.add.at который в соответствии с документами «Для добавления ufunc этот метод эквивалентен a [index] + = b, за исключением того, что результаты накапливаются для элементов, которые проиндексированы более одного раза.»:

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

Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

amuresan picture amuresan  ·  4Комментарии

navytux picture navytux  ·  4Комментарии

manuels picture manuels  ·  3Комментарии

'
Pezhvuk picture Pezhvuk  ·  4Комментарии

astrofrog picture astrofrog  ·  4Комментарии