title: Why is a NumPy int not an instance of a Python int, but a NumPy float is an instance of a Python float?
body: <p>Consider the following:</p>
  
  <pre><code>&gt;&gt;&gt; import numbers
  &gt;&gt;&gt; import numpy
  &gt;&gt;&gt; a = numpy.int_(0)
  &gt;&gt;&gt; isinstance(a, int)
  False
  &gt;&gt;&gt; isinstance(a, numbers.Integral)
  True
  &gt;&gt;&gt; b = numpy.float_(0)
  &gt;&gt;&gt; isinstance(b, float)
  True
  &gt;&gt;&gt; isinstance(b, numbers.Real)
  True
  </code></pre>
  
  <p>NumPy's <code>numpy.int_</code> and <code>numpy.float_</code> types are both in Python's <a href="https://docs.python.org/3/library/numbers.html" rel="noreferrer">numeric abstract base class hierarchy</a>, but it is strange to me that a <code>np.int_</code> object <em>is not</em> an instance of the built-in <code>int</code> class, while a <code>np.float_</code> object <em>is</em> an instance of the built-in <code>float</code> type.</p>
  
  <p>Why is this the case?</p>