与"无"的比较将导致元素对象

Mat*_*ias 28 python numpy

显然它将(在'未来')不再可能使用以下内容:

import numpy as np
np.array([0,1,2]) == None
> False
> FutureWarning: comparison to `None` will result in an elementwise object comparison in the future.
Run Code Online (Sandbox Code Playgroud)

这也打破了numpy数组的延迟加载模式:

import numpy as np
def f(a=None):
    if a == None: 
        a = <some default value>
    <function body>
Run Code Online (Sandbox Code Playgroud)

还有哪些其他可能性允许您仍然使用延迟初始化?

Ima*_*ngo 55

您正在寻找is:

if a is None:
    a = something else
Run Code Online (Sandbox Code Playgroud)

问题是,通过使用==运算符,如果input元素a是一个numpy数组,numpy将尝试执行元素明智比较并告诉您无法比较它.

对于anumpy数组,a == None给出错误,np.all(a == None)不会(但不会做你期望的).相反,a is None无论数据类型如何,都可以工作a.