В настоящее время я работаю над задачей классификации и наткнулся на проблему:
У меня есть 2D-массив A (1000 x 441) (последний элемент - метка для классификации) и некоторые значения ошибок E (форма 1000 x 440).
То, что я пытаюсь сделать, - вычесть или добавить значения ошибок из моего входного массива в зависимости от метки.
Почему я не могу просто сделать
add = [1,2,3,4] # just some random indices
sub = [6,7,8,9]
A[add][:,:-1] += E[add]
A[sub][:,:-1] -= E[sub]
В A. никаких изменений не происходит. Не знаю, почему это происходит. т.е. работает:
A[0][:-1] += E[0] # this works
Он работает с использованием простого цикла, но я хочу избежать повторения каждого вектора в моих данных.
Заранее спасибо!
Вы должны сделать индексацию всего за один раз:
A[add,:-1] += E[add]
В противном случае "причудливая индексация" A[add]
создает копию, которая при модификации не влияет на A