title: Storing Python objects in a Python list vs. a fixed-length Numpy array
body: <p>In doing some bioinformatics work, I've been pondering the ramifications of storing object instances in a Numpy array rather than a Python list, but in all the testing I've done the performance was worse in every instance. I am using CPython. Does anyone know the reason why?</p>
  
  <p>Specifically:</p>
  
  <ul>
  <li>What are the performance impacts of using a fixed-length array <code>numpy.ndarray(dtype=object)</code> vs. a regular Python list? Initial tests I performed showed that accessing the Numpy array elements was slower than iteration through the Python list, especially when using object methods.</li>
  <li>Why is it faster to instantiate objects using a list comprehension such as <code>[ X() for i in range(n) ]</code> instead of a <code>numpy.empty(size=n, dtype=object)</code>?</li>
  <li>What is the memory overhead of each? I was not able to test this. My classes extensively use <code>__slots__</code>, if that has any impact.</li>
  </ul>