2011-10-15 36 views
13

Tôi mới dùng Numpy và cố tìm kiếm hàm để liệt kê các biến cùng với kích thước của chúng (cả kích thước ma trận cũng như sử dụng bộ nhớ) nhưng không thể tìm thấy . Tôi về cơ bản tìm kiếm một tương đương với lệnh "whos" trong MATLAB và Octave. Có tồn tại bất kỳ lệnh như vậy trong Python Numpy?Tương đương với lệnh "whos" trong Python Numpy

Cảm ơn

+1

Lưu ý rằng điều này cũng tương tự như IDL của ' help' lệnh (trong trường hợp bất cứ ai nên tìm kiếm IDL-> python) – keflavich

Trả lời

19

Nếu bạn đang sử dụng IPython, có một whos lệnh 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'> 

Nói chung tôi khuyên bạn nên sử dụng IPython khi thực hiện công việc tương tác trong python với NumPy/scipy/matplotlib/etc Fernando Perez và những người khác đang tích cực bổ sung thêm rất nhiều tính năng tuyệt vời.

+0

Có cách nào áp dụng "whos" cho một tên biến cụ thể như "whos a" không? – Leo

5

Python có hàm dựng sẵn dir() trả về danh sách tên trong phạm vi địa phương hiện tại.

1

Điều này ít nhiều hoạt động như những người tương đương.

Trong vỏ tương tác (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 lệnh in thông tin về tất cả các biến. Tôi định nghĩa chức năng sau đây để có được thông tin về một cá nhân hoặc một nhóm các biến:

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) 

sử dụng:

whosMy(var1) 

cho nhiều biến:

whosMy(var1,var2,var3) 
Các vấn đề liên quan