title: What is the difference between numpy "type identifiers" and "types" within Cython?
body: <p>What is confusing is that if you want to create an array you use </p>
  
  <pre><code>chunk = np.array ( [[94.,3.],[44.,4.]], dtype=np.float64)
  </code></pre>
  
  <p>But if you want to define the type inside a <code>buffer</code> reference , you use </p>
  
  <pre><code>cdef func1 (np.ndarray[np.float64_t, ndim=2] A):
  
      print A 
  </code></pre>
  
  <p>Notice the difference between <code>np.float64</code> and <code>np.float64_t</code> .</p>
  
  <p><strong>My Guesses</strong></p>
  
  <p>I am guessing that a <code>type identifier</code> is what's created explicitly w/ the Cython C-like <code>typedef</code> syntax</p>
  
  <pre><code>ctypedef np.float64_t dtype_t
  </code></pre>
  
  <p>But the numpy <code>type</code> is just the Python <code>&lt;type 'type'&gt;</code> type .</p>
  
  <pre><code>&gt;&gt;&gt; type ( np.float64)
  &lt;type 'type'&gt;
  </code></pre>
  
  <p>The Numpy documentation on <code>dtype</code>s doesn't help me. <a href="http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html">http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html</a> </p>