关于sum函数的Python弃用警告

2024-09-27 23:21:21 发布

您现在位置:Python中文网/ 问答频道 /正文

两周前我就把它编码好了。我得到了这个警告,但我不明白我为什么得到它。警告是:

"C:/Users/Administrator/Documents/Python/sezg_1_diffne.py:147: DeprecationWarning: Calling np.sum(generator) is deprecated, and in the future will give a different result. Use np.sum(np.from_iter(generator)) or the python sum builtin instead. obje_1=detmas.objVal+sum(hopen[i]*fixedCost for i in Fset)"

我的代码的一部分是:

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

我尝试了一些我在互联网上找到的东西,比如删除numpy并重新安装它。然而,这些解决方案并不适用于我的代码。我怎么解决?提前谢谢。。。在


Tags: the代码in警告编码fornpgenerator
3条回答

我找到了一个替代jpp的解决方案。如果希望保留from numpy import *,可以在导入numpy之前将内置对象分配给另一个变量,如here所示。在

在您的特殊情况下,您有两种选择:

  1. 导入内置模块:

    import builtins用于Python3,或{}用于Python2。您可以调用builtins.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数组的内置sum的行为是否与预期的一样。在

不要从numpy导入sum。在代码中查找from numpy import sum或{},然后删除这些行。否则,您将重写内置的sum^{}和{a2}是独立的函数,有不同的需求。在

警告表明,虽然您的代码现在可以工作,但将来可能无法工作。请注意,实际上您确实隐式使用了生成器。这些线是等效的:

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

在Python中,显式地表示生成器不需要额外的括号。当您避免从NumPy库导入sum时,错误将消失。在

您只需使用sum而不是np.sum。我也遇到了同样的问题。当我切换到内置的总和后,警告消失了。在

你不必做任何特殊的导入或分配任何东西。在

相关问题 更多 >

    热门问题