Search code examples
pythontypesnumpyint32

Return type of numpy.minimum()?


When I use the numpy functions minimum() and maximum() on boolean arrays, the type of the result prints as numpy.int32. However, a comparison with the numpy.int32 type fails (even after a cast). Is this a bug?

g = np.ones((5, 5), dtype = np.bool)
h = np.maximum(g, 4)
i = np.int32(h)

print 'type of g ', g.dtype.type   # prints <type 'numpy.bool_'>
print 'type of h ', h.dtype.type   # prints <type 'numpy.int32'>
print 'type of i ', i.dtype.type   # prints <type 'numpy.int32'>

print h.dtype.type == i.dtype.type # prints True
print h.dtype.type == np.int32     # prints False
print i.dtype.type == np.int32     # prints False
print i.dtype.type == np.bool_     # prints False

Solution

  • Seems normal enough to me. Using np.maximum returns the maximum of g and 4, which is 4 (True == 1). You get a matrix full of fours, which is integer type.

    If you use this syntax for your type comparisons, they work: h.dtype.type == np.dtype(np.int32) or more simply h.dtype == np.int32.