ความสับสนระหว่าง numpy, scipy, matplotlib และ pylab


132

Numpy, scipy, matplotlib และ pylab เป็นคำที่ใช้กันทั่วไปในหมู่พวกเขาที่ใช้ python ในการคำนวณทางวิทยาศาสตร์

ฉันเพิ่งเรียนรู้เล็กน้อยเกี่ยวกับ pylab และฉันก็สับสน เมื่อใดก็ตามที่ฉันต้องการนำเข้า numpy ฉันสามารถทำได้เสมอ:

import numpy as np

ฉันแค่พิจารณาว่าเมื่อฉันทำ

from pylab import *

numpy จะถูกนำเข้าด้วย (พร้อมnpนามแฝง) โดยพื้นฐานแล้วอันที่สองทำสิ่งต่างๆได้มากกว่าเมื่อเทียบกับอันแรก

มีบางสิ่งที่ฉันต้องการถาม:

  1. ใช่หรือไม่ที่ pylab เป็นเพียงเครื่องห่อสำหรับ numpy, scipy และ matplotlib?
  2. เนื่องจาก np เป็นนามแฝง numpy ใน pylab นามแฝง scipy และ matplotlib ใน pylab คืออะไร? (เท่าที่ฉันรู้ plt เป็นนามแฝงของ matplotlib.pyplot แต่ฉันไม่รู้จักนามแฝงของ matplotlib เอง)

4
ในบันทึกลักษณะโดยทั่วไปฉันจะหลีกเลี่ยงการใช้ pylab (และ * imports) นอกเชลล์แบบโต้ตอบ Pylab เป็นภาคผนวกแปลก ๆ สำหรับ matplotlib แต่อย่างใด
seberg

@unutbu: ขอบคุณสำหรับลิงค์ที่ทำให้ทุกอย่างชัดเจน ฉันคิดว่ามันหมายความว่า scipy เป็นโมดูลที่แตกต่างกันโดยสิ้นเชิงดังนั้นจึงไม่เกี่ยวข้องกับ pylab
goFrendiAsgard

4
@goFrendiAsgard: คุณสามารถตรวจสอบสิ่งที่นำเข้า pylab โดยดูใน/usr/lib/pymodules/python2.7/matplotlib/pylab.py(เส้นทางที่แน่นอนแตกต่างกันเล็กน้อยสำหรับ Windows หรือ OSX ถามว่าคุณต้องการความช่วยเหลือในการค้นหาหรือไม่)
unutbu

ขอบคุณนั่นคือสิ่งที่ฉันมองหา ฉันคิดว่าฉันจะใช้วิธี "pythonic" มากกว่าเนื่องจาก pylab เป็นเพียงกระดาษห่อหุ้มสำหรับพวกเขาที่ใช้กับ matlab
goFrendiAsgard

คำตอบ:


129
  1. ไม่pylabเป็นส่วนหนึ่งของmatplotlib(ในmatplotlib.pylab) และพยายามให้ MatLab เหมือนสภาพแวดล้อม matplotlibมีจำนวนการอ้างอิงในหมู่พวกเขาที่จะนำเข้าภายใต้นามแฝงที่พบบ่อยnumpy ไม่ได้เป็นเมืองขึ้นของnpscipymatplotlib

  2. หากคุณเรียกใช้ipython --pylabการนำเข้าอัตโนมัติจะใส่สัญลักษณ์ทั้งหมดจากmatplotlib.pylabขอบเขตส่วนกลาง เช่นเดียวกับที่คุณเขียนnumpyจะถูกนำเข้าภายใต้npนามแฝง สัญลักษณ์จากmatplotlibมีอยู่ภายใต้mplนามแฝง


9
@Benjamin Bannier แล้วนี่คืออะไร - wiki.scipy.org/PyLab ? สิ่งนี้ทำให้ฉันสับสน
shahensha

@shahensha ดูเหมือนว่ามีสอง PyLabs; ตามลิงค์ที่คุณส่ง: "... ความแตกต่างระหว่างวิสัยทัศน์สำหรับPyLab ใหม่ที่แสดงในหน้านี้กับแพ็คเกจ pylab ที่มีอยู่ซึ่งเป็นส่วนหนึ่งของ matplotlib "
The Red Pea

15

Scipy และ numpyเป็นโครงการทางวิทยาศาสตร์ที่มีจุดมุ่งหมายเพื่อนำการคำนวณตัวเลขที่มีประสิทธิภาพและรวดเร็วมาสู่ python

Matplotlibเป็นชื่อของ python plotting library

Pyplotเป็น API แบบโต้ตอบสำหรับ matplotlib ซึ่งส่วนใหญ่ใช้ในโน้ตบุ๊กเช่น jupyter โดยทั่วไปคุณจะใช้สิ่งนี้: import matplotlib.pyplot as plt.

Pylabเป็นสิ่งเดียวกับ pyplot แต่มีคุณสมบัติพิเศษ (ไม่แนะนำให้ใช้ในขณะนี้)

  • pylab = pyplot + numpy

ดูข้อมูลเพิ่มเติมที่นี่: Matplotlib, Pylab, Pyplot ฯลฯ : อะไรคือความแตกต่างระหว่างสิ่งเหล่านี้และเมื่อใดที่จะใช้


2
อีกตัวอย่างหนึ่งโพสต์โดยตรงบนเว็บไซต์ matplotlib ของ "Matplotlib, pyplot และ pylab: วิธีการที่พวกเขาเกี่ยวข้อง? Matplotlibเป็นแพคเกจทั้งหมด ; matplotlib.pyplotเป็นโมดูลใน matplotlibและpylabเป็นโมดูลที่ได้รับการติดตั้งข้าง matplotlib. "
แดงถั่ว

3

เนื่องจากบางคน (เช่นฉัน) อาจยังสับสนเกี่ยวกับการใช้ pylab เนื่องจากมีตัวอย่างการใช้งานpylabอยู่ในอินเทอร์เน็ตนี่คือคำพูดจากคำถามที่พบบ่อยของ matplotlib อย่างเป็นทางการ:

pylab เป็นโมดูลอำนวยความสะดวกที่นำเข้า matplotlib.pyplot (สำหรับการพล็อต) และ numpy (สำหรับคณิตศาสตร์และการทำงานกับอาร์เรย์) จำนวนมากในช่องว่างชื่อเดียว แม้ว่าหลายตัวอย่างจะใช้ pylab แต่ก็ไม่แนะนำอีกต่อไป

ดังนั้น TL; DR; คือห้ามใช้ pylab ระยะเวลา ใช้pyplotและนำเข้าnumpyแยกกันตามต้องการ

นี่คือลิงค์สำหรับอ่านเพิ่มเติมและตัวอย่างที่เป็นประโยชน์อื่น ๆ


1
pylab ที่เพิ่งเปิดเมื่อเร็ว ๆ นี้กระโดดกลับมาอย่างรวดเร็วด้วยความหวาดกลัวในสิ่งที่ฉันเห็น สิ่งนี้เคยถูกยอมรับว่าเป็นเรื่องปกติได้อย่างไร?
eric

ใช่ใครจะรู้
jamescampbell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.