2011-10-15 45 views
13

我是Numpy的新手,嘗試搜索函數以列出變量及其大小(矩陣尺寸以及內存使用情況),但找不到。我基本上是在尋找一個相當於MATLAB和Octave中的「whos」命令。 Python Numpy中是否存在這樣的命令?Python中的「whos」命令的等效Numpy

感謝

+1

注意,這是類似IDL的'幫助「命令(以防任何人應該搜索IDL-> python) – keflavich

回答

19

如果使用IPython,有whos命令內置:

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

總的來說,我強烈建議做在Python交互工作的時候使用IPython的numpy的/ SciPy的/ matplotlib /等等。費爾南多佩雷斯和其他人正在積極增加很多很棒的功能。

+0

有沒有辦法將」whos「應用於特定的變量名稱,比如」whos a「? – Leo

5

Python有一個內置函數dir(),它返回當前本地作用域中的名稱列表。

1

這或多或少的作用等同於誰。

在交互式殼(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

衛生組織命令打印關於所有變量的信息。我定義下面的函數來獲取有關個人或一組變量的信息:

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) 

用法:

whosMy(var1) 

多個變量:

whosMy(var1,var2,var3)