2014-05-03 16 views
15

Tôi thường sử dụng gói sau để tạo các ô của mình: matplotlib.pylab. Tuy nhiên, cũng có một gói gọi là matplotlib.pyplot.matplotlib.pyplot vs matplotlib.pylab

Tôi không thể phát hiện bất kỳ sự khác biệt nào giữa hai khi sử dụng chúng. Vì vậy, câu hỏi của tôi là như sau:

Sự khác nhau giữa các gói matplotlib.pylabmatplotlib.pyplot là gì. Trong trường hợp nào bạn sẽ tư vấn cho người khác?

+0

trùng lặp? http://stackoverflow.com/questions/14560477/what-is-a-difference-between-pylab-and-matplotlib-pyplot?rq=1 –

+0

có thể trùng lặp của [Đó là cách được đề xuất để vẽ: matplotlib hoặc pylab? ] (http://stackoverflow.com/questions/16849483/which-is-the-recommended-way-to-plot-matplotlib-or-pylab) – tacaswell

+0

cũng https://stackoverflow.com/questions/11469336/what- sự khác biệt giữa pylab và pyplot – tacaswell

Trả lời

12

mỗi the FAQ:

Pyplot cung cấp giao diện nhà máy cho tiềm ẩn âm mưu thư viện trong matplotlib. Điều này có nghĩa là các hình và trục được ẩn hoàn toàn và được tạo tự động để đạt được âm mưu mong muốn ....

Pylab kết hợp chức năng pyplot (để vẽ) với chức năng numpy (cho toán học và làm việc với mảng) trong không gian tên duy nhất, làm cho không gian tên đó (hoặc môi trường) thậm chí nhiều hơn giống như MATLAB. Ví dụ, người ta có thể gọi hàm sin và cos chỉ giống như bạn có thể trong MATLAB, cũng như có tất cả các tính năng của pyplot.

Giao diện pyplot thường được ưu tiên cho không tương tác vẽ đồ thị (ví dụ: tập lệnh). Giao diện pylab thuận tiện cho tính toán tương tác và vẽ đồ thị, vì nó giảm thiểu việc nhập. (. Tôi nhấn mạnh)

Lưu ý rằng

from pylab import * 

cũng thực hiện

from numpy import * 

này ghi đè nhiều chức năng Python BUILTIN như:

In [5]: import __builtin__ 
In [6]: import numpy as np 

In [5]: {name for name in set(dir(np)).intersection(dir(__builtin__)) if not name.startswith('__') and getattr(__builtin__, name) != getattr(np, name)} 
Out[5]: {'abs', 'all', 'any', 'max', 'min', 'round', 'sum'} 

Vì vậy, tôi không' t như from pylab import * (hoặc thực sự from module import * cho bất kỳ mô-đun) bởi vì nó làm cho tên Python yêu quý nổi tiếng cư xử theo những cách bất ngờ (nếu bạn không luôn luôn ghi nhớ rằng from numpy import * đã bị ô nhiễm không gian tên toàn cầu.)

Ví dụ,

In [32]: np.all([np.arange(3), np.arange(3)]) 
Out[32]: False 

trong khi

In [33]: all([np.arange(3), np.arange(3)]) 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 
Các vấn đề liên quan