Замена всех элементов, кроме последнего, в определенных строках 2D-массива

1

В настоящее время я работаю над задачей классификации и наткнулся на проблему:

У меня есть 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

Он работает с использованием простого цикла, но я хочу избежать повторения каждого вектора в моих данных.

Заранее спасибо!

Теги:
numpy

1 ответ

0
Лучший ответ

Вы должны сделать индексацию всего за один раз:

A[add,:-1] += E[add]

В противном случае "причудливая индексация" A[add] создает копию, которая при модификации не влияет на A

  • 0
    Спасибо за ответ. Так просто, но все же я упустил это из виду ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню