Numpy, scipy, matplotlib ve pylab arasındaki karışıklık


132

Numpy, scipy, matplotlib ve pylab, bilimsel hesaplama için python kullananların ortak terimleridir.

Pilab hakkında biraz bilgi edindim ve kafam karıştı. Numpy'yi içe aktarmak istediğimde her zaman şunları yapabilirim:

import numpy as np

Düşünüyorum, bir kez yaptım

from pylab import *

numpy de ( nptakma adla) içe aktarılacaktır . Yani temelde ikincisi, birincisine kıyasla daha fazla şey yapıyor.

Sormak istediğim birkaç şey var:

  1. Pylab'ın sadece numpy, scipy ve matplotlib için bir paketleyici olduğu doğru mu?
  2. Np, pylab'daki numpy takma adı olduğundan, pylab'daki scipy ve matplotlib takma adı nedir? (bildiğim kadarıyla plt, matplotlib.pyplot'un takma adıdır, ancak matplotlib'in takma adını bilmiyorum)

4
Genel bir stil notunda, etkileşimli kabuğun dışında pylab (ve * içe aktarmalar) kullanımından kaçınırdım. Pylab zaten matplotlib için biraz tuhaf bir ek.
seberg

@unutbu: Her şeyi netleştiren bağlantı için teşekkürler. Bence bu aynı zamanda scipy'nin tamamen farklı bir modül olduğu ve dolayısıyla pilab ile alakasız olduğu anlamına da geliyor
goFrendiAsgard

4
@goFrendiAsgard: Bakarak tam olarak hangi pilabın içe aktardığını inceleyebilirsiniz /usr/lib/pymodules/python2.7/matplotlib/pylab.py(tam yol Windows veya OSX için biraz farklıdır; bulmakta yardıma ihtiyacınız olup olmadığını sorun.)
unutbu

Teşekkür ederim, aradığım şey bu. Sanırım daha "pitonik" yolu kullanacağım, çünkü pylab sadece matlab için kullananlar için bir paketleyici.
goFrendiAsgard

Yanıtlar:


129
  1. Hayır, (içinde ) ' pylabnin bir parçasıdır ve size MatLab benzeri bir ortam sağlamaya çalışır. aralarında ortak takma ad altında içe aktardığı bir dizi bağımlılığa sahiptir . bir bağımlılık değildir .matplotlibmatplotlib.pylabmatplotlibnumpynpscipymatplotlib

  2. ipython --pylabOtomatik bir içe aktarma çalıştırırsanız , tüm sembolleri matplotlib.pylabglobal kapsama yerleştirir. Yazdığınız gibi takma adla numpyiçe aktarılır np. Alanından gelen semboller takma ad matplotlibaltında bulunur mpl.


9
@Benjamin Bannier O zaman bu nedir - wiki.scipy.org/PyLab ? Bu kafamı karıştırıyor.
shahensha

@shahensha, iki PyLab varmış gibi geliyor ; gönderdiğiniz bağlantıya göre: "... bu sayfada ifade edilen yeni bir PyLab vizyonu ile matplotlib'in bir parçası olan mevcut pilab paketi arasındaki fark "
The Red Pea

15

Scipy ve numpy , amacı verimli ve hızlı sayısal hesaplamayı python'a getirmek olan bilimsel projelerdir.

Matplotlib , python çizim kitaplığının adıdır.

Pyplot , çoğunlukla jupyter gibi dizüstü bilgisayarlarda kullanılmak üzere matplotlib için etkileşimli bir api'dir. Genellikle bu gibi kullanmak: import matplotlib.pyplot as plt.

Pylab , pyplot ile aynı şeydir, ancak ekstra özelliklere sahiptir (kullanımı şu anda tavsiye edilmemektedir).

  • pylab = pyplot + numpy

Daha fazla bilgiyi burada bulabilirsiniz: Matplotlib, Pylab, Pyplot, vb: Bunlar arasındaki fark nedir ve her birinin ne zaman kullanılacağı?


2
Başka bir örnek Matplotlib sitesinde doğrudan yayınlanan "? Matplotlib, pyplot ve PyLab: nasıl ilişkili Matplotlibolduğu bütün paket ; matplotlib.pyplotbir modüldür matplotlib içinde ve pylabyüklü alır bir modüldür matplotlib yanında. "
The Red Pea

3

Bazı kişilerin (benim gibi) hala pylab kullanımı konusunda kafası karışmış olabileceğinden, kullanım örnekleri pylabinternette olduğu için, işte resmi matplotlib SSS'den bir alıntı:

pylab, matplotlib.pyplot (çizim için) ve numpy'yi (matematik ve dizilerle çalışmak için) tek bir ad alanında toplu olarak içe aktaran kullanışlı bir modüldür. Pek çok örnek pilab kullanmasına rağmen, artık tavsiye edilmemektedir.

Öyleyse, TL; DR; pylab kullanmayın, nokta. Gerektiği gibi ayrı kullanın pyplotve içe aktarın numpy.

Daha fazla okuma ve diğer yararlı örnekler için bağlantı burada .


1
Yakın zamanda açılan pilap, gördüğüm şey karşısında dehşete kapıldım. Bu nasıl normal olarak kabul edildi?
eric

Evet, kim bilir.
jamescampbell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.