2011-10-15 49 views
13

Soy nuevo en Numpy e intento buscar una función para enumerar las variables junto con sus tamaños (tanto las dimensiones de la matriz como el uso de memoria) pero no pude encontrar una . En esencia, estoy buscando un equivalente del comando "whos" en MATLAB y Octave. ¿Existe tal comando en Python Numpy?Equivalente al comando "whos" en Python Numpy

Gracias

+1

Tenga en cuenta que esto es similar a IDL del ' help' comando (en caso de que alguien debería estar buscando IDL-> python) – keflavich

Respuesta

19

Si está utilizando IPython, hay una whos comando integrado:

In [9]: whos 
Variable Type  Data/Info 
------------------------------- 
a   ndarray 4x4x3: 48 elems, type `int64`, 384 bytes 
b   ndarray 100000: 100000 elems, type `int64`, 800000 bytes (781 kb) 
np   module  <module 'numpy' from '/Li<...>kages/numpy/__init__.py'> 

En general recomiendo encarecidamente utilizar IPython al hacer el trabajo interactivo en python con numpy/scipy/matplotlib/etc. Fernando Pérez y otros están agregando activamente muchas funciones excelentes.

+0

¿Hay alguna manera de aplicar "whos" a un nombre de variable específico como "whos a"? – Leo

5

Python tiene una función integrada dir() que devuelve la lista de nombres en el ámbito local actual.

1

Esto más o menos funciona como quién equivalente.

En el intérprete de comandos interactivo (IDLE)

>> import os 
>> import sys 
>> a = 10 
>> def MyWho(): 
     print [v for v in globals().keys() if not v.startswith('_')] 
>> MyWho() 
['a', 'MyWho', 'sys', 'os'] 
>> import numpy 
>> MyWho() 
['a', 'MyWho', 'numpy', 'sys', 'os'] 
2

whos comando imprime información sobre todas las variables. I definidos siguiente función para obtener información sobre una persona o un grupo de variables:

import numpy as np 
def whosMy(*args): 
    sequentialTypes = [dict, list, tuple] 
    for var in args: 
    t=type(var) 
    if t== np.ndarray: 
     print type(var),var.dtype, var.shape 
    elif t in sequentialTypes: 
     print type(var), len(var) 
    else: 
     print type(var) 

uso:

whosMy(var1) 

para múltiples variables:

whosMy(var1,var2,var3)