2011-10-15 18 views
13

Sono nuovo in Numpy e sto cercando una funzione per elencare le variabili insieme alle loro dimensioni (sia le dimensioni della matrice che l'utilizzo della memoria) ma non sono riuscito a trovarne una . Sto essenzialmente cercando un equivalente del comando "whos" in MATLAB e Octave. Esiste un comando di questo tipo in Python Numpy?Equivalente al comando "whos" in Python Numpy

Grazie

+1

Si noti che questo è simile a IDL di ' comando help' (nel caso in cui qualcuno dovrebbe cercare IDL-> python) – keflavich

risposta

19

Se si utilizza IPython, c'è un whos comando built-in:

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'> 

In generale mi raccomando con IPython quando facendo lavoro interattivo in pitone con NumPy/SciPy/matplotlib /eccetera. Fernando Perez e altri stanno aggiungendo molte caratteristiche interessanti.

+0

Esiste un modo per applicare "chi" a un nome di variabile specifico come "whos a"? – Leo

5

Python ha una funzione incorporata dir() che restituisce l'elenco di nomi nell'ambito locale corrente.

1

Questo più o meno funziona come equivalente.

Nella shell interattiva (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 stampa le informazioni su tutte le variabili. Ho definito seguente funzione per ottenere informazioni su un individuo o un gruppo di variabili:

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) 

utilizzo:

whosMy(var1) 

per molteplici variabili:

whosMy(var1,var2,var3)