title: Difference between np.int, np.int_, int, and np.int_t in cython?
body: <p>I am a bit struggled with so many <code>int</code> data types in cython.</p>
  
  <p><code>np.int, np.int_, np.int_t, int</code></p>
  
  <p>I guess <code>int</code> in pure python is equivalent to <code>np.int_</code>, then where does <code>np.int</code> come from? I cannot find the document from numpy? Also, why does <code>np.int_</code> exist given we do already have <code>int</code>?</p>
  
  <p>In cython, I guess <code>int</code> becomes a C type when used as <code>cdef int</code> or <code>ndarray[int]</code>, and when used as <code>int()</code> it stays as the python caster?</p>
  
  <p>Is <code>np.int_</code> equivalent to <code>long</code> in C? so <code>cdef long</code> is the identical to <code>cdef np.int_</code>?</p>
  
  <p>Under what circumstances should I use <code>np.int_t</code> instead of <code>np.int</code>? e.g. <code>cdef np.int_t</code>, <code>ndarray[np.int_t]</code> ...</p>
  
  <p>Can someone briefly explain how the wrong use of those types would affect the performance of compiled cython code?</p>