Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 29, 2020 07:46:16

Emorh
Зарегистрирован: 2020-01-27
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

numpy вместо цикла

Здравствуйте! Имеется следующий участок кода в программе

    predictions = np.array([[1, 1, 1, 1], [1, 2, -1, -1]])
    target_index = np.array([[2], [1]])
    
    predictions[0][target_index[0]] -= 1
    predictions[1][target_index[1]] -= 1



predictions и target_index поступают извне, но это всегда двумерные массивы с одинаковым числом строк.
Можно ли записать такой код без использования циклов? Я пробовал сделать так:
    predictions = np.array([[1, 1, 1, 1], [1, 2, -1, -1]])
    target_index = np.array([[2], [1]])
    
    predictions[:][target_index[:]] -= 1

Но получаю ошибку - выход за пределы массива

Офлайн

#2 Янв. 29, 2020 08:06:55

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

numpy вместо цикла

Emorh
Можно ли записать такой код без использования циклов?
Очевидно можно! У вас нет в коде циклов.
Если запишете с циклами получите туже ошибку. Не надо использовать индексы выходящие за пределы массива.

p.s.
И повторять послания не нужно, все их и так видят. Я думаю не отвечают поскольку вопрос сформулирован некорректно. А причина ошибки очевидна из сообщения интерпретатора и тут просто нечего добавить.



Отредактировано doza_and (Янв. 29, 2020 08:10:07)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version