Nhầm lẫn giữa numpy, scipy, matplotlib và pylab


132

Numpy, scipy, matplotlib và pylab là những thuật ngữ phổ biến trong số những người sử dụng python để tính toán khoa học.

Tôi chỉ tìm hiểu một chút về pylab, và tôi đã nhầm lẫn. Bất cứ khi nào tôi muốn nhập numpy, tôi luôn có thể làm:

import numpy as np

Tôi chỉ xem xét, rằng một khi tôi làm

from pylab import *

numpy cũng sẽ được nhập khẩu (với npbí danh). Vì vậy, về cơ bản, cái thứ hai làm nhiều thứ hơn so với cái đầu tiên.

Có vài điều tôi muốn hỏi:

  1. Có đúng là pylab chỉ là một gói cho numpy, scipy và matplotlib?
  2. Vì np là bí danh numpy trong pylab, bí danh scipy và matplotlib trong pylab là gì? (theo như tôi biết, plt là bí danh của matplotlib.pyplot, nhưng tôi không biết bí danh cho chính matplotlib)

4
Nói chung, tôi sẽ tránh sử dụng pylab (và * nhập khẩu) bên ngoài vỏ tương tác. Pylab là một chút của một phụ lục kỳ lạ cho dù sao matplotlib.
seberg

@unutbu: cảm ơn vì liên kết, điều đó làm cho mọi thứ rõ ràng. Tôi nghĩ điều đó cũng có nghĩa là scipy là một mô-đun hoàn toàn khác, và do đó không liên quan đến pylab
goFrendiAsgard

4
@goFrendiAsgard: Bạn có thể kiểm tra chính xác những gì pylab nhập khẩu bằng cách tìm kiếm /usr/lib/pymodules/python2.7/matplotlib/pylab.py(đường dẫn chính xác có một chút khác biệt đối với Windows hoặc OSX; hỏi bạn có cần trợ giúp tìm nó không.)
unutbu

Cảm ơn bạn, đó là những gì tôi tìm kiếm. Tôi nghĩ rằng tôi sẽ sử dụng cách "pythonic" nhiều hơn vì pylab chỉ là một trình bao bọc cho những người đang sử dụng để matlab.
goFrendiAsgard

Câu trả lời:


129
  1. Không, pylablà một phần của matplotlib(trong matplotlib.pylab) và cố gắng cung cấp cho bạn môi trường giống như MatLab. matplotlibcó một số phụ thuộc, trong số đó phụ thuộc vào numpybí danh chung np. scipykhông phải là một phụ thuộc của matplotlib.

  2. Nếu bạn chạy ipython --pylabnhập tự động sẽ đặt tất cả các biểu tượng từ matplotlib.pylabphạm vi toàn cầu. Giống như bạn đã viết numpyđược nhập dưới npbí danh. Các biểu tượng matplotlibcó sẵn dưới mplbí danh.


9
@Benjamin Bannier Đây là cái gì vậy - wiki.scipy.org/PyLab ? Điều này làm tôi bối rối.
shahensha 30/03/2015

@shahensha, có vẻ như có hai PyLabs; theo liên kết bạn đã gửi: "... sự khác biệt giữa tầm nhìn cho một PyLab mới được thể hiện trên trang này và gói pylab hiện có là một phần của matplotlib "
The Red Pea

15

Scipy và numpy là các dự án khoa học với mục đích mang lại tính toán số hiệu quả và nhanh chóng cho python.

Matplotlib là tên của thư viện âm mưu trăn.

Pyplot là một api tương tác cho matplotlib, chủ yếu được sử dụng trong các máy tính xách tay như jupyter. Bạn thường sử dụng nó như thế này : import matplotlib.pyplot as plt.

Pylab là điều tương tự như pyplot, nhưng với các tính năng bổ sung (việc sử dụng nó hiện không được khuyến khích).

  • pylab = pyplot + numpy

Xem thêm thông tin ở đây: Matplotlib, Pylab, Pyplot, v.v: Sự khác biệt giữa những thứ này và khi nào nên sử dụng mỗi loại?


2
Một ví dụ khác đăng tải trực tiếp trên trang web matplotlib của "Matplotlib, pyplot và pylab: làm thế nào họ có liên quan? Matplotlibtrọn gói ; matplotlib.pyplotlà một module trong matplotlib ; và pylablà một mô-đun đó được cài đặt cùng với matplotlib. "
The Red Pea

3

Vì một số người (như tôi) vẫn có thể bị nhầm lẫn về việc sử dụng pylab vì các ví dụ sử dụng pylabcó trên internet, đây là trích dẫn từ Câu hỏi thường gặp về matplotlib:

pylab là một mô-đun tiện lợi nhập số lượng lớn matplotlib.pyplot (cho âm mưu) và numpy (cho toán học và làm việc với các mảng) trong một không gian tên duy nhất. Mặc dù nhiều ví dụ sử dụng pylab, nó không còn được khuyến khích.

Vì vậy, TL; DR; là không sử dụng pylab, thời gian. Sử dụng pyplotvà nhập numpyriêng khi cần thiết.

Đây là liên kết để đọc thêm và các ví dụ hữu ích khác.


1
Gần đây đã mở pylab, nhanh chóng trở lại trong nỗi kinh hoàng với những gì tôi thấy. Làm thế nào điều này từng được chấp nhận như bình thường?
eric

Vâng, ai biết được.
jamescampbell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.