NumPy: Imprimir todos los elementos de un vector de NumPy

Publicado el 31 agosto 2021 por Daniel Rodríguez @analyticslane

Al imprimir por pantalla una matriz de NumPy es posible que no aparezcan todos los elementos, solamente una parte de estos. Lo que es debido a una opción por defecto en la configuración de la librería. Veamos cómo se puede acceder a la configuración para cambiar esta opción de modo que sea posible imprimir todos los elementos de un vector de NumPy.

Las opciones de impresión de NumPy

Las opciones de impresión de NumPy se pueden consultar mediante la función np.get_printoptions(). Una función que al ser llamada en una sesión de Python devolverá un resultado como el siguiente:

{'edgeitems': 3,
 'threshold': 1000,
 'floatmode': 'maxprec',
 'precision': 8,
 'suppress': False,
 'linewidth': 75,
 'nanstr': 'nan',
 'infstr': 'inf',
 'sign': '-',
 'formatter': None,
 'legacy': False}

en donde las opciones más importantes para el tamaño de los vectores son:

  • threshold: máximo número de elementos que se imprimirá por pantalla, las matrices o vectores que superen este límite serán resumidos.
  • edgeitems: el número de elementos que se imprimen al principio y al final de un vector cuando este es resumido porque supera el valor indicado en threshold.
  • linewidth: ancho máximo en caracteres que se pueden mostrar en cada una de las líneas.
  • precision: los dígitos que se mostrarán cuando los elementos sean de tipo real.

Los valores por defecto de estas opciones se pueden modificar mediante el uso de la función np.set_printoptions(). Función en la únicamente es necesario pasar opciones que se desean modificar junto al valor.

Imprimir todos los elementos de un vector de NumPy

Ahora, por lo que se ha visto en la sección anterior, el número máximo de elementos que se muestran en una matriz de NumPy es 1000, por lo que si se crea un vector con 1200 no se mostrarán todos.

import numpy as np

np.arange(1200)
array([   0,    1,    2, ..., 1197, 1198, 1199])

Solamente los tres primeros elementos y los tres últimos. En el caso de una matriz se mostrará solamente las tres primeras y últimas columnas de las tres primeras y últimas filas. Algo similar a lo que se puede ver en el siguiente ejemplo.

np.arange(1200).reshape(120, 10)
array([[   0,    1,    2, ...,    7,    8,    9],
       [  10,   11,   12, ...,   17,   18,   19],
       [  20,   21,   22, ...,   27,   28,   29],
       ...,
       [1170, 1171, 1172, ..., 1177, 1178, 1179],
       [1180, 1181, 1182, ..., 1187, 1188, 1189],
       [1190, 1191, 1192, ..., 1197, 1198, 1199]])

Ahora para imprimir todos los valores de estas matrices solamente se tiene que cambiar el valor de threshold de 1000 a infinito, tal como se muestra a continuación.

np.set_printoptions(threshold=np.inf)

np.arange(1200)

A partir de este momento, en la sesión de NumPy, se mostrarán todos los elementos de los vectores independientemente del tamaño de estos. Lo que se puede comprobar simplemente ejecutando el código anterior, aunque en este caso no mostraré las salidas debido al tamaño de estas.

Conclusiones

En esta ocasión se ha visto cómo se puede modificar las opciones de impresión para imprimir todos los elementos de un vector de NumPy. Unas opciones de configuración similar a las que se han visto en el caso de Pandas y que puede ser útil en ciertas ocasiones.