Предупреждение об устаревании Python относительно функции sum - PullRequest
0 голосов
/ 04 февраля 2019

Я кодировал алгоритм, и он работал до 2 недель назад.Я получаю это предупреждение и не могу понять, почему я его получаю.Предупреждение:

"C: /Users/Administrator/Documents/Python/sezg_1_diffne.py: 147: DeprecationWarning: вызов np.sum (генератора) устарел и в будущем дастдругой результат. Вместо этого используйте np.sum (np.from_iter (generator)) или встроенную сумму python. obje_1 = detmas.objVal + sum (hopen [i] * fixedCost для i в Fset) "

Часть моего кода:

obje_1=detmas.objVal+sum(hopen[i]*fixedCost for i in Fset)

Я попробовал кое-что, что я нашел в интернете, такое как удаление numpy и переустановка его.Однако эти решения не работают для моего кода.Как я могу это решить?Заранее спасибо ...

Ответы [ 3 ]

0 голосов
/ 29 мая 2019

Я нашел альтернативное решение по jpp.Если вы хотите сохранить from numpy import *, вы можете назначить встроенный объект другой переменной перед импортом numpy, как показано здесь .

В вашем конкретном случае у вас есть двавыбор:

  1. Импорт встроенного модуля:

    import builtins для Python 3 или import __builtin__ для Python 2. И вы вызываете либо builtins.sum(hopen[i]*fixedCost for i in Fset), либо__builtin__.sum(hopen[i]*fixedCost for i in Fset).

  2. Присвойте встроенную сумму другой переменной перед импортом numpy:

    bltin_sum = sum

    from numpy import *

    bltin_sum(hopen[i]*fixedCost for i in Fset)

Я уже проверил, что встроенная сумма ведет себя так же, как и ожидалось для массивов numpy.

0 голосов
/ 13 июля 2019

Все, что вам нужно сделать, это использовать sum вместо np.sum.Я столкнулся с той же проблемой.Предупреждение исчезло после того, как я переключился на встроенную сумму.

Вам не нужно делать какой-либо специальный импорт или назначать что-либо.

0 голосов
/ 04 февраля 2019

Не импортировать sum из numpy.Найдите в своем коде from numpy import sum или from numpy import * и удалите эти строки.В противном случае вы переопределите встроенный sum.np.sum и встроенные sum являются независимыми функциями с различными требованиями.

Предупреждение предполагает, что, хотя ваш код может работать сейчас, он может не работать вбудущее.Обратите внимание, что вы на самом деле используете генератор неявно.Эти строки эквивалентны:

sum(hopen[i]*fixedCost for i in Fset)
sum((hopen[i]*fixedCost for i in Fset))

В Python дополнительные скобки не требуются для явного обозначения генератора.Ваша ошибка исчезнет, ​​если вы не будете импортировать sum из библиотеки NumPy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...