I came across unpredictable behavior with Python Numpy, set and NaN (not-a-number):
>>> set([np.float64('nan'), np.float64('nan')]) set([nan, nan]) >>> set([np.float32('nan'), np.float32('nan')]) set([nan, nan]) >>> set([np.float('nan'), np.float('nan')]) set([nan, nan]) >>> set([np.nan, np.nan]) set([nan]) >>> set([float('nan'), float('nan')]) set([nan, nan])
Here np.nan gives one set of elements, while Numpy nans gives several nans in a set. So swims ("nan")! And note that:
>>> type(float('nan')) == type(np.nan) True
It is interesting how this difference arises and what rationality is behind different behaviors.
source share