Apéndice A. NumPy avanzado
En este apéndice, profundizaré en la biblioteca NumPy para el cálculo de matrices. Esto incluirá más detalles internos sobre el tipo ndarray y algoritmos y manipulaciones de arrays más avanzados.
Este apéndice contiene temas diversos y no es necesario leerlo de forma lineal. A lo largo de los capítulos, generaré datos aleatorios para muchos ejemplos que utilizarán el generador de números aleatorios por defecto del módulo numpy.random:
In[11]:rng=np.random.default_rng(seed=12345)
A.1 Internos del objeto ndarray
La función ndarray de NumPy proporciona una forma de interpretar un bloque de datos de tipo homogéneo (contiguos o en cadenas) como un objeto array multidimensional. El tipo de datos, o dtype, determina cómo se interpretan los datos como si fueran de coma flotante, enteros, booleanos o cualquiera de los otros tipos que hemos estado viendo.
Parte de lo que hace flexible a ndarray es que cada objeto array es una vistastrided sobre un bloque de datos. Te preguntarás, por ejemplo, cómo es posible que la vista de array arr[::2,
::-1] no copie ningún dato. La razón es que el ndarray es algo más que un trozo de memoria y un tipo de datos; también tiene información de stridingque permite al array moverse por la memoria con tamaños de paso variables. Más concretamente, la ndarray consta internamente de lo siguiente:
Un puntero a datos,es decir, un bloque de datos en RAM o en un archivo mapeado en memoria
El tipo de datos o dtype que describe las celdas de valores ...