Kebingungan antara numpy, scipy, matplotlib dan pylab


132

Numpy, scipy, matplotlib, dan pylab adalah istilah umum di antara mereka yang menggunakan python untuk perhitungan ilmiah.

Saya baru belajar sedikit tentang pylab, dan saya jadi bingung. Setiap kali saya ingin mengimpor numpy, saya selalu dapat melakukan:

import numpy as np

Saya hanya mempertimbangkan, begitu saya lakukan

from pylab import *

numpy akan diimpor juga (dengan npalias). Jadi pada dasarnya yang kedua melakukan lebih banyak hal dibandingkan dengan yang pertama.

Ada beberapa hal yang ingin saya tanyakan:

  1. Apakah benar pylab hanyalah pembungkus untuk numpy, scipy dan matplotlib?
  2. Karena np adalah alias numpy di pylab, apa itu alias scipy dan matplotlib di pylab? (Sejauh yang saya tahu, plt adalah alias dari matplotlib.pyplot, tapi saya tidak tahu alias untuk matplotlib itu sendiri)

4
Pada catatan gaya umum, saya akan menghindari penggunaan pylab (dan * impor) di luar shell interaktif. Pylab sedikit tambahan aneh untuk matplotlib.
seberg

@unutbu: terima kasih atas tautannya, yang membuat semuanya menjadi jelas. Saya pikir itu juga berarti bahwa scipy adalah modul yang sama sekali berbeda, dan dengan demikian tidak terkait dengan pylab
goFrendiAsgard

4
@goFrendiAsgard: Anda dapat memeriksa dengan tepat apa yang diimpor pylab dengan melihat ke dalam /usr/lib/pymodules/python2.7/matplotlib/pylab.py(jalur persisnya sedikit berbeda untuk Windows atau OSX; tanyakan apakah Anda perlu bantuan menemukannya.)
unutbu

Terima kasih, itulah yang saya cari. Saya pikir saya akan menggunakan cara yang lebih "pythonic" karena pylab hanyalah pembungkus bagi mereka yang terbiasa dengan matlab.
goFrendiAsgard

Jawaban:


129
  1. Tidak, pylabadalah bagian dari matplotlib(dalam matplotlib.pylab) dan mencoba memberi Anda lingkungan seperti MatLab. matplotlibmemiliki sejumlah dependensi, di antaranya numpyyang diimpor dengan alias bersama np. scipybukan ketergantungan matplotlib.

  2. Jika Anda menjalankan ipython --pylabimpor otomatis akan menempatkan semua simbol dari matplotlib.pylabdalam lingkup global. Seperti Anda menulis, numpydiimpor dengan npalias. Simbol dari matplotlibtersedia di bawah mplalias.


9
@Benjamin Bannier Apa ini - wiki.scipy.org/PyLab ? Ini membingungkan saya.
shahensha

@ Shahensha, sepertinya ada dua PyLabs; per tautan yang Anda kirim: "... perbedaan antara penglihatan untuk PyLab baru yang diungkapkan pada halaman ini, dan paket pylab yang ada yang merupakan bagian dari matplotlib "
The Red Pea

15

Scipy dan numpy adalah proyek ilmiah yang bertujuan untuk membawa komputasi numerik yang efisien dan cepat ke python.

Matplotlib adalah nama pustaka plot python.

Pyplot adalah api interaktif untuk matplotlib, sebagian besar untuk digunakan pada notebook seperti jupyter. Biasanya Anda menggunakannya seperti ini: import matplotlib.pyplot as plt.

Pylab adalah hal yang sama dengan pyplot, tetapi dengan fitur tambahan (penggunaannya saat ini tidak disarankan).

  • pylab = pyplot + numpy

Lihat informasi lebih lanjut di sini: Matplotlib, Pylab, Pyplot, dll: Apa perbedaannya dan kapan menggunakannya?


2
Contoh lain diposting langsung di situs matplotlib "Matplotlib, pyplot dan pylab: bagaimana hubungannya? MatplotlibAdalah seluruh paket ; matplotlib.pyplotadalah modul di matplotlib ; dan pylabmerupakan modul yang diinstal bersama matplotlib. "
The Red Pea

3

Karena beberapa orang (seperti saya) mungkin masih bingung tentang penggunaan pylab karena contoh penggunaannya pylabada di internet, berikut adalah kutipan dari FAQ matplotlib resmi:

pylab adalah modul kenyamanan yang mengimpor sebagian besar matplotlib.pyplot (untuk merencanakan) dan numpy (untuk matematika dan bekerja dengan array) dalam ruang nama tunggal. Meskipun banyak contoh menggunakan pylab, itu tidak lagi direkomendasikan.

Jadi, TL; DR; adalah jangan gunakan pylab, titik. Gunakan pyplotdan impor numpysecara terpisah sesuai kebutuhan.

Berikut ini tautan untuk bacaan lebih lanjut dan contoh berguna lainnya.


1
Baru-baru ini membuka pylab, dengan cepat tersentak ketakutan pada apa yang saya lihat. Bagaimana ini bisa diterima sebagai normal?
eric

Ya siapa yang tahu.
jamescampbell
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.