Comparison to `None` will result in an elementwise object

Question:

Apparantly it will (in the ‘future’) not be possible anymore to use the following:

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.

This also breaks the lazy loading pattern for numpy arrays:

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

What other possibilities allow you to still use lazy initialization?

Asked By: Matthias

||

Answers:

You are looking for is:

if a is None:
    a = something else

The problem is that, by using the == operator, if the input element a is a numpy array, numpy will try to perform an element wise comparison and tell you that you cannot compare it.

For a a numpy array, a == None gives error, np.all(a == None) doesn’t (but does not do what you expect). Instead a is None will work regardless the data type of a.

Answered By: Imanol Luengo
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.