una tutorial promedio producto multiplicacion matriz matrices invertir crear con python arrays numpy

tutorial - promedio de una matriz python



¿Cómo imprimir la matriz NumPy completa? (13)

Esta es una forma única de hacerlo, que es útil si no desea cambiar su configuración predeterminada:

def fullprint(*args, **kwargs): from pprint import pprint import numpy opt = numpy.get_printoptions() numpy.set_printoptions(threshold=''nan'') pprint(*args, **kwargs) numpy.set_printoptions(**opt)

Cuando imprimo una matriz numpy, obtengo una representación truncada, pero quiero la matriz completa.

¿Hay alguna manera de hacer esto?

Ejemplos:

>>> numpy.arange(10000) array([ 0, 1, 2, ..., 9997, 9998, 9999]) >>> numpy.arange(10000).reshape(250,40) array([[ 0, 1, 2, ..., 37, 38, 39], [ 40, 41, 42, ..., 77, 78, 79], [ 80, 81, 82, ..., 117, 118, 119], ..., [9880, 9881, 9882, ..., 9917, 9918, 9919], [9920, 9921, 9922, ..., 9957, 9958, 9959], [9960, 9961, 9962, ..., 9997, 9998, 9999]])


Esta es una ligera modificación (eliminada la opción de pasar argumentos adicionales a set_printoptions) de la respuesta de neok .

Muestra cómo puede usar contextlib.contextmanager para crear fácilmente dicho administrador de contexto con menos líneas de código:

import numpy as np from contextlib import contextmanager @contextmanager def show_complete_array(): oldoptions = np.get_printoptions() np.set_printoptions(threshold=np.inf) try: yield finally: np.set_printoptions(**oldoptions)

En tu código se puede utilizar así:

a = np.arange(1001) print(a) # shows the truncated array with show_complete_array(): print(a) # shows the complete array print(a) # shows the truncated array (again)


Esto suena como si estuvieras usando adormecido.

Si ese es el caso, puede agregar:

import numpy as np np.set_printoptions(threshold=np.nan)

Eso deshabilitará la impresión de la esquina. Para obtener más información, consulte este tutorial NumPy .


Las respuestas anteriores son las correctas, pero como una alternativa más débil puede transformarse en una lista:

>>> numpy.arange(100).reshape(25,4).tolist() [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23], [24, 25, 26, 27], [28, 29, 30, 31], [32, 33, 34, 35], [36, 37, 38, 39], [40, 41, 42, 43], [44, 45, 46, 47], [48, 49, 50, 51], [52, 53, 54, 55], [56, 57, 58, 59], [60, 61, 62, 63], [64, 65, 66, 67], [68, 69, 70, 71], [72, 73, 74, 75], [76, 77, 78, 79], [80, 81, 82, 83], [84, 85, 86, 87], [88, 89, 90, 91], [92, 93, 94, 95], [96, 97, 98, 99]]



Para estos que les gusta importar como np:

import numpy as np np.set_printoptions(threshold=np.nan)

También funcionará


Puedes usar la función array2string - docs .

a = numpy.arange(10000).reshape(250,40) print(numpy.array2string(a, threshold=numpy.nan, max_line_width=numpy.nan)) # [Big output]


Si una matriz es demasiado grande para ser impresa, NumPy omite automáticamente la parte central de la matriz y solo imprime las esquinas: Para deshabilitar este comportamiento y obligar a NumPy a imprimir toda la matriz, puede cambiar las opciones de impresión usando set_printoptions .

>>> np.set_printoptions(threshold=''nan'')

o

>>> np.set_printoptions(edgeitems=3,infstr=''inf'', ... linewidth=75, nanstr=''nan'', precision=8, ... suppress=False, threshold=1000, formatter=None)

También puede consultar la documentación de numpy para obtener más ayuda.


Supongamos que tienes una matriz numpy

for row in arr: print row

Si desea imprimir la matriz completa de una sola vez (sin cambiar np.set_printoptions), pero desea algo más simple (menos código) que el administrador de contexto, simplemente haga

import numpy as np np.set_printoptions(linewidth=2000) # default = 75 Mat = np.arange(20000,20150).reshape(2,75) # 150 elements (75 columns) print(Mat)


Usando un administrador de contexto como sugirió Paul Price

import numpy as np class fullprint: ''context manager for printing full numpy arrays'' def __init__(self, **kwargs): if ''threshold'' not in kwargs: kwargs[''threshold''] = np.nan self.opt = kwargs def __enter__(self): self._opt = np.get_printoptions() np.set_printoptions(**self.opt) def __exit__(self, type, value, traceback): np.set_printoptions(**self._opt) a = np.arange(1001) with fullprint(): print(a) print(a) with fullprint(threshold=None, edgeitems=10): print(a)


numpy.set_printoptions(threshold=numpy.nan) complemento a esta answer del número máximo de columnas (corregido con numpy.set_printoptions(threshold=numpy.nan) ), también hay un límite de caracteres para mostrar. En algunos entornos, como cuando se llama a Python desde bash (en lugar de la sesión interactiva), esto se puede solucionar configurando el linewidth del parámetro como se linewidth continuación.

arr = numpy.arange(10000).reshape(250,40)

En este caso, su ventana debe limitar el número de caracteres para ajustar la línea.

Para aquellos que usen texto sublime y deseen ver los resultados dentro de la ventana de salida, debe agregar la opción de compilación "word_wrap": false al archivo de compilación sublime [ source ].


numpy.savetxt

numpy.savetxt(sys.stdout, numpy.arange(10000))

o si necesitas una cadena:

import StringIO sio = StringIO.StringIO() numpy.savetxt(sio, numpy.arange(10000)) s = sio.getvalue() print s

El formato de salida predeterminado es:

0.000000000000000000e+00 1.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00 ...

y se puede configurar con otros argumentos.

Probado en Python 2.7.12, numpy 1.11.1.


import numpy as np np.set_printoptions(threshold=np.inf)

Sugiero usar np.inf lugar de np.nan cual es sugerido por otros. Ambos funcionan para su propósito, pero al establecer el umbral en "infinito" es obvio para todos los que lean su código lo que quiere decir. Tener un umbral de "no un número" me parece un poco vago.