Almacenamiento de objetos de Python en una lista de Python frente a una matriz Numpy de longitud fija

Al hacer un trabajo de bioinformática, he estado reflexionando sobre las ramificaciones de almacenar instancias de objetos en una matriz Numpy en lugar de en una lista de Python, pero en todas las pruebas que he realizado, el rendimiento fue peor en todas las instancias. Estoy usando CPython. ¿Alguien sabe la razón por la cual?

Específicamente:

¿Cuáles son los impactos en el rendimiento de usar una matriz de longitud fija?numpy.ndarray(dtype=object) ¿Contra una lista regular de Python? Las pruebas iniciales que realicé mostraron que el acceso a los elementos de la matriz de Numpy era más lento que la iteración a través de la lista de Python, especialmente al usar métodos de objetos.¿Por qué es más rápido instanciar objetos utilizando una lista de comprensión, como[ X() for i in range(n) ] en vez de unanumpy.empty(size=n, dtype=object)?¿Cuál es la sobrecarga de memoria de cada uno? No pude probar esto. Mis clases usan extensivamente__slots__, si eso tiene algún impacto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta