İçeriğe atla

NumPy

NumPy
Orijinal yazar(lar)Travis Oliphant
Geliştirici(ler)Açık kaynak
İlk yayınlanma2016 (8 yıl önce) (2016)
Güncel sürüm1.20.3 / 10 Mayıs 2021 (3 yıl önce) (2021-05-10)[1]
Programlama diliPython, C
İşletim sistemiÇapraz platform yazılımı
LisansBSD
Resmî sitesinumpy.org
Kod deposuhttps://github.com/numpy/numpy/releases

NumPy, Python programlama dili için büyük, çok boyutlu dizileri ve matrisleri destekleyen, bu diziler üzerinde çalışacak üst düzey matematiksel işlevler ekleyen bir kitaplıktır.[2] NumPy'nin atası Numeric, ilk olarak Jim Hugunin tarafından diğer birkaç geliştiricinin katkılarıyla oluşturuldu. 2005 yılında Travis Oliphant, Numarray'in özelliklerini kapsamlı değişikliklerle Numeric'e dahil ederek NumPy'yi yarattı.

NumPy açık kaynaklı bir yazılımdır ve birçok katkıda bulunanlara sahiptir.

Tarihçe

Python programlama dili, başlangıçta sayısal hesaplama için tasarlanmamıştı ancak erken dönemlerde bilim ve mühendislik topluluğunun dikkatini çekti. 1995 yılında, bir dizi hesaplama paketini tanımlamak amacıyla özel ilgi grubu (special interest group) matrix-sig kuruldu; üyeleri arasında, dizi hesaplamayı kolaylaştırmak için Python'un sözdizimini (özellikle dizin oluşturma sözdizimini[3]) genişleten Python tasarımcısı ve sürdürücü Guido van Rossum vardı.[4]

Bir matris paketinin bir uygulaması Jim Fulton tarafından tamamlandı, daha sonra Jim Hugunin tarafından genelleştirildi ve Numeric[4] olarak adlandırıld. ("Sayısal Python uzantıları (Numerical Python extensions)" veya "NumPy" olarak da bilinmektedir).[5][6] Massachusetts Teknoloji Enstitüsü'nde yüksek lisans öğrencisi olan Hugunin, 1997 yılında JPython üzerinde çalışmak üzere Ulusal Araştırma Girişimleri Kurumuna (en) katıldı.[6] Diğer erken katkıda bulunanlar arasında David Ascher, Konrad Hinsen ve Travis Oliphant yer aldı.[6]

Numeric için daha esnek bir yedek olarak Numarray adlı yeni bir paket yazıldı.[7] Numeric gibi, o da artık kullanımdan kaldırıldı.[8][8] Numarray, büyük diziler için daha hızlı işlemlere sahipti, ancak küçük dizilerde Numeric'den daha yavaştı.[9] Bu nedenle bir süre her iki paket de farklı kullanım durumları için paralel olarak kullanıldı. Numeric'in son sürümü (v24.2) 11 Kasım 2005'te, numarray'in son sürümü (v1.5.2) ise 24 Ağustos 2006'da yayınlandı.[10]

Numeric'i Python standart kütüphanesine sokma arzusu vardı, ancak Guido van Rossum, kodun o zamanki durumunda korunamayacağına karar verdi.[11]

2005'in başlarında, NumPy geliştiricisi Travis Oliphant, topluluğu tek bir dizi paketi etrafında birleştirmek istedi ve Numarray'in özelliklerini Numeric'e taşıdı. Bunun sonucunda 2006'da NumPy 1.0 olarak yayınlandı.[7] Bu yeni proje SciPy'nin bir parçasıydı. Sadece bir dizi nesnesi elde etmek için büyük SciPy paketi kurmak yerine bu yeni paket ayrıldı ve NumPy olarak adlandırıldı. Python3 desteği 2011'de NumPy sürüm 1.5.0 ile eklendi.[12]

2011'de PyPy, PyPy için NumPy API'sinin bir uygulaması üzerinde geliştirmeye başladı.[13] NumPy ile henüz tam uyumlu değildi.[13]

Özellikleri

NumPy, optimize etmeyen bir bayt kodu yorumlayıcısı olan Python'un CPython referans uygulamasını hedeflemektedir. Python'un bu sürümü için yazılan matematiksel algoritmalar, genellikle derlenmiş eşdeğerlerinden çok daha yavaş çalışmaktadır. NumPy, çok boyutlu diziler ve diziler üzerinde verimli çalışan işlevler ve operatörler sağlayarak yavaşlık sorununu kısmen ele alır. Bunları yapmak için NumPy kullanarak, çoğunlukla iç döngüler olmak üzere bazı kodların yeniden yazılmasını gerekmektedir.

Python'da NumPy kullanmak, her ikisi de yorumlandığından MATLAB ile karşılaştırılabilir işlevsellik sağlamaktadır. Çoğu işlem skalerler yerine diziler veya matrisler üzerinde çalıştığı sürece, her ikisi de kullanıcının hızlı programlar yazmasına izin vermektedir.[14] Her ikisi karşılaştırıldığında, MATLAB çok sayıda ek araç kutusuna, özellikle Simulink'e sahiptir, oysa NumPy daha modern ve eksiksiz bir programlama dili olan Python ile entegredir. Ayrıca, tamamlayıcı Python paketleri mevcuttur; SciPy, daha fazla MATLAB benzeri işlevsellik ekleyen bir kütüphanedir. Ayrıca Matplotlib, MATLAB benzeri çizim işlevselliği sağlayan bir çizim paketidir. Dahili olarak, hem MATLAB hem de NumPy, verimli lineer cebir hesaplamaları için BLAS ve LAPACK'e güvenmektedir

Yaygın olarak kullanılan bilgisayarlı görü kitaplığı OpenCV'nin Python verilerini depolamak ve üzerinde çalışmak için NumPy dizilerini kullanmaktadır. Birden çok kanala sahip görüntüler basitçe üç boyutlu diziler olarak temsil edildiğinden, indeksleme, dilimleme veya diğer dizilerle maskeleme, bir görüntünün belirli piksellerine erişmenin çok etkili yollarıdır. OpenCV'de görüntüler, çıkarılan özellik noktaları, filtre çekirdekleri ve daha pek çok şey için evrensel veri yapısı olarak NumPy dizisi, programlama iş akışını ve hata ayıklamayı büyük ölçüde basitleştirmektedir.

ndarray veri yapısı

NumPy'nin temel işlevi, n-boyutlu dizi veri yapısı için "ndarray"idir. Bu diziler, bellekte adım adım görünümlerdir.[7] Python'un yerleşik liste veri yapısının aksine, bu diziler homojen olarak yazılmaktadır. Tek bir dizinin tüm elemanları aynı tipte olmalıdır.

Bu tür diziler ayrıca C/C++, Cython ve Fortran uzantıları tarafından CPython yorumlayıcısına ayrılan bellek arabelleklerine, veri kopyalamaya gerek kalmadan mevcut sayısal kitaplıklarla bir dereceye kadar uyumluluk sağlayan görünümler olabilmektedir. Bu işlevsellik, bu tür kitaplıkları (özellikle BLAS ve LAPACK) saran SciPy paketi tarafından kullanılmaktadır. NumPy, bellek eşlemeli ndarray'ler için yerleşik desteğe sahiptir.[7]

Sınırlamalar

Bir diziye giriş eklemek, Python listelerinde olduğu kadar kolay bir şekilde mümkün değildir. Dizileri genişletmek için ​np.pad(...)​ yolu aslında istenen şekil ve dolgu değerlerine sahip yeni diziler yaratmaktadır. Ayrıca verilen diziyi yenisine kopyalar ve yeni diziyi döndürmektedir. NumPy'nin ​np.concatenate([a1,a2])​ işlemi aslında iki diziyi birbirine bağlamaz, ancak sırayla verilen her iki dizideki girişlerle dolu yeni bir tane döndürmektedir. Bir dizinin boyutsallığını ​np.reshape(...)​ ile yeniden şekillendirmek ancak dizideki eleman sayısı değişmediği sürece mümkündür.

Bu koşullar, NumPy'nin dizilerinin bitişik bellek arabelleklerinde görünümler olması gerektiği gerçeğinden kaynaklanmaktadır. Blaze adlı bir değiştirme paketi bu sınırlamayı aşmaya çalışmaktadır.[15]

Vektörleştirilmiş bir işlem olarak ifade edilemeyen algoritmalar, "saf Python"da uygulanmaları gerektiğinden daha yavaş çalışmaktadır. Vektörleştirme ise bazı işlemlerin bellek karmaşıklığını sabitten doğrusala yükseltebilmektedir. Çünkü girdiler kadar büyük olan geçici diziler oluşturulmalıdır. Sayısal kodun çalışma zamanı derlemesi, bu sorunlardan kaçınmak için birkaç grup tarafından uygulanmıştır. NumPy ile birlikte çalışan açık kaynaklı çözümler arasında ​scipy.weave​, numepr[16] ve Numba[17] bulunmaktadır. Cython ve Pythran bunlara statik derleme alternatifleridir.

Birçok modern büyük ölçekli bilimsel hesaplama uygulamasının, NumPy dizilerinin yeteneklerini aşan gereksinimleri vardır. Örneğin, NumPy dizileri genellikle büyük veri kümelerinin analizi için yetersiz kapasiteye sahip olabilecek bir bilgisayarın belleğine yüklenmektedir. Ayrıca NumPy işlemleri tek bir CPU üzerinde yürütülmektedir. Bununla birlikte, birçok doğrusal cebir işlemi, CPU kümelerinde veya birçok derin öğrenme uygulamasının güvendiği GPU'lar ve TPU'lar gibi özel donanımlarda yürütülerek hızlandırılabilmektedir.

Sonuç olarak, son yıllarda bilimsel Python ekosisteminde dağıtılmış diziler için Dask ve GPU'lardaki hesaplamalar için TensorFlow veya JAX gibi çeşitli alternatif dizi uygulamaları ortaya çıkmıştır. Popülaritesi nedeniyle, bunlar genellikle Numpy'nin API'sinin bir alt kümesini uygulamaktadır veya onu taklit etmektedir. Böylece kullanıcılar kodlarında gereken minimum değişiklikle dizi uygulamalarını değiştirebilmektedir.[18] Nvidia'nın CUDA çerçevesi tarafından hızlandırılan ve yakın zamanda tanıtılan CUPy[19] adlı bir kitaplık, NumPy'nin 'açılan bir ikamesi' olarak daha hızlı bilgi işlem potansiyeli göstermiştir.[20]

Örnekler

Dizi(Array) oluşturma

import numpy as np 
x = np.array([1, 2, 3])
print(x)
#array([1, 2, 3])
y = np.arange(10)
print(y)
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

Basit operatörler

a = np.array([1, 2, 3, 6])
b = np.linspace(0, 2, 4)
c = a - b
print(c)
#array([ 1., 1.33333333, 1.66666667, 4.])
print(a**2)
#array([ 1,  4,  9, 36])

Evrensel fonksiyonlar

a = np.linspace(-np.pi, np.pi, 100) 
b = np.sin(a)
c = np.cos(a)

Lineer cebir

from numpy.random import rand
from numpy.linalg import solve, inv
a = np.array([[1, 2, 3], [3, 4, 6.7], [5, 9.0, 5]])
a.transpose()
print(a)
#array([[ 1. ,  3. ,  5. ],
#       [ 2. ,  4. ,  9. ],
#       [ 3. ,  6.7,  5. ]])
print(inv(a))
#array([[-2.27683616,  0.96045198,  0.07909605],
#       [ 1.04519774, -0.56497175,  0.1299435 ],
#       [ 0.39548023,  0.05649718, -0.11299435]])
b =  np.array([3, 2, 1])
print(solve(a, b))  # ax = b denklemini çöz
#array([-4.83050847,  2.13559322,  1.18644068])
c = rand(3, 3) * 20  # 20 ile ölçeklenmiş [0,1] içinde 3x3 rastgele değerler matrisi oluşturun
print(c)
#array([[  3.98732789,   2.47702609,   4.71167924],
#       [  9.24410671,   5.5240412 ,  10.6468792 ],
#       [ 10.38136661,   8.44968437,  15.17639591]])
print(np.dot(a, c))  # matris çarpımı
#array([[  53.61964114,   38.8741616 ,   71.53462537],
#       [ 118.4935668 ,   86.14012835,  158.40440712],
#       [ 155.04043289,  104.3499231 ,  195.26228855]])

Tensörler

M = np.zeros(shape=(2, 3, 5, 7, 11))
T = np.transpose(M, (4, 2, 1, 3, 0))
print(T.shape)
#(11, 5, 3, 7, 2)

Kaynakça

  1. ^ "Releases – numpy/numpy". 15 Eylül 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Şubat 2021GitHub vasıtasıyla. 
  2. ^ Harris, Charles R.; Millman, K. Jarrod; van der Walt, Stéfan J.; Gommers, Ralf; Virtanen, Pauli; Cournapeau, David; Wieser, Eric; Taylor, Julian; Berg, Sebastian; Smith, Nathaniel J.; Kern, Robert (17 Eylül 2020). "Array programming with NumPy". Nature (İngilizce). 585 (7825): 357-362. doi:10.1038/s41586-020-2649-2. ISSN 0028-0836. 26 Mayıs 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Haziran 2021. 
  3. ^ Singh, Ajit (20 Ocak 2021). "Review of "Array programming with NumPy"". doi:10.14293/s2199-1006.1.sor-uncat.a7759461.v1.raugfi. 
  4. ^ a b Millman, K. Jarrod; Aivazis, Michael (2011). "Python for Scientists and Engineers". Computing in Science and Engineering. 13 (2): 9–12. Bibcode:2011CSE....13b...9M. doi:10.1109/MCSE.2011.36. Archived from the original on 2019-02-19. Retrieved 2014-07-07.
  5. ^ Oliphant, Travis E. (2007). "Python for Scientific Computing". Computing in Science & Engineering. 9 (3): 10-20. doi:10.1109/mcse.2007.58. ISSN 1521-9615. 
  6. ^ a b c Dubois, Paul F.; Hinsen, Konrad; Hugunin, James (1996). "Numerical Python". Computers in Physics. 10 (3): 262. doi:10.1063/1.4822400. ISSN 0894-1866. 
  7. ^ a b c d van der Walt, Stéfan; Colbert, S. Chris; Varoquaux, Gaël (2011). "The NumPy array: a structure for efficient numerical computation". Computing in Science and Engineering. IEEE. 13 (2): 22. arXiv:1102.1523. Bibcode:2011CSE....13b..22V. doi:10.1109/MCSE.2011.37. S2CID 16907816.
  8. ^ a b "Numarray Homepage". Retrieved 2006-06-24.
  9. ^ Travis Oliphant and other SciPy developers. "[Numpy-discussion] Status of Numeric". Retrieved 2 February 2017.
  10. ^ "NumPy Sourceforge Files". Retrieved 2008-03-24.
  11. ^ "History_of_SciPy - SciPy wiki dump". scipy.github.io.
  12. ^ "NumPy 1.5.0 Release Notes". Retrieved 2011-04-29.
  13. ^ a b "PyPy Status Blog: NumPy funding and status update". Retrieved 2011-12-22.
  14. ^ The SciPy Community. "NumPy for Matlab users". Retrieved 2 February 2017.
  15. ^ "Blaze Ecosystem Docs". Read the Docs. Retrieved 17 July 2016.
  16. ^ Francesc Alted. "numexpr". Retrieved 8 March 2014.
  17. ^ "Numba". Retrieved 8 March 2014.
  18. ^ Charles R Harris; K. Jarrod Millman; Stéfan J. van der Walt; et al. (16 September 2020). "Array programming with NumPy" (PDF). Nature. 585 (7825): 357–362. doi:10.1038/S41586-020-2649-2. ISSN 1476-4687. PMC 7759461. PMID 32939066. Wikidata Q99413970.
  19. ^ Shohei Hido - CuPy: A NumPy-compatible Library for GPU - PyCon 2018, retrieved 2021-05-11
  20. ^ Entschev, Peter Andreas (2019-07-23). "Single-GPU CuPy Speedups". Medium. Retrieved 2021-05-11.

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

<span class="mw-page-title-main">Matris (matematik)</span>

Matematikte matris veya dizey, dikdörtgen bir sayılar tablosu veya daha genel bir açıklamayla, toplanabilir veya çarpılabilir soyut miktarlar tablosudur. Dizeyler daha çok doğrusal denklemleri tanımlamak, doğrusal dönüşümlerde çarpanların takibi ve iki parametreye bağlı verilerin kaydedilmesi amacıyla kullanılırlar. Dizeylerin toplanabilir, çıkartılabilir, çarpılabilir, bölünebilir ve ayrıştırılabilir olmaları, doğrusal cebir ve dizey kuramının temel kavramı olmalarını sağlamıştır.

<span class="mw-page-title-main">İterasyon</span>

İterasyon, tekerrür, tekrarlama, yineleme ve mükerrer icrâ, ardışık işlem anlamlarına gelen iterasyon (iteration), programlamada bir dizi işlemin döngüler kullanarak yazılmasıdır.

<span class="mw-page-title-main">Kova sıralaması</span>

Kova Sıralaması, sıralanacak bir diziyi parçalara ayırarak sınırlı sayıdaki kovalara atan bir sıralama algoritmasıdır. Ayrışma işleminin ardından her kova kendi içinde ya farklı bir algoritma kullanılarak ya da kova sıralamasını özyinelemeli olarak çağırarak sıralanır.

<span class="mw-page-title-main">Dinamik dizi</span>

Dinamik dizi, tutabileceği eleman sayısının derleme zamanında bilinmesine gerek olmayan dizidir. Dinamik dizi tanımlandığında, kapasitesini belirten bir bellek tahsis edilir ve kullanımda kapasiteye erişildiğinde yeniden bir dinamik bellek tahsisi yapılır. Dinamik diziye elemanlar eklenebilir, diziden elemanlar silinebilir; dizinin boyutu azaltılabilir ve arttırılabilir. Bazı programlama dillerinde vektör adıyla anılan bu yapıyı birçok modern programlama dili kendi kütüphaneleriyle sunmaktadır.

<span class="mw-page-title-main">MATLAB</span>

MATLAB, çok paradigmalı sayısal hesaplama yazılımı ve dördüncü nesil programlama dilidir. Özel mülk bir programlama dili olan MATLAB, MathWorks tarafından geliştirilmektedir. MATLAB kullanıcıya, matris işleme, fonksiyon ve veri çizme, algoritma uygulama, kullanıcı arayüzü oluşturma, C, C++, Java ve Fortran gibi diğer dillerde yazılmış programlarla arabağlama imkânı tanır.

Jacobi metodu, sayısal lineer cebirde lineer denklemlerin diyagonal olarak baskın sistemlerin çözümlerinin belirlenmesi için oluşturulmuş bir algoritmadır. Her diyagonal eleman tek tek çözülür ve yaklaşık bir değer olarak alınır. Bu aşama onlar yakınsayana kadar tekrarlanır. Bu algoritma matris köşegenleştirilmesi Jacobi dönüşüm metodunun sadeleştirilmiş şeklidir. Bu metot daha sonra Carl Gustav Jacob Jacobi olarak isimlendirilmiştir.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

<span class="mw-page-title-main">Öznitelik çıkarımı</span>

Makine öğrenimi, örüntü tanıma ve görüntü işleme alanlarında kullanılan öznitelik çıkarımı, girdi olarak verilen ölçülmüş verileri kullanarak türetilmiş değerler (öznitelikler) oluşturur. Türetilen değerlerin bilgilendirici ve artıksız olması, öğrenme sürecini kolaylaştırıcı olması ve bazı durumlarda insan uzmanlar tarafından daha iyi anlaşılabilir (yorumlanabilir) olması amaçlanır. Öznitelik çıkarımı, boyut indirgeme konusuyla ilişkilidir.

Python for S60' PyS60 olarak da adlandırılan, Nokia'nın, orijinal Python 2.2.2'den S60 yazılım platformunda genel Python programlama dilinin limanıydı. 11 Şubat 2010'da yayınlanan en son son sürüm olan PyS60-2.0.0, python çekirdeğini 2.5.4 sürümüne güncelledi.

IronPython, Python programlama dilinin .NET Framework ve Mono'yu hedefleyen bir gerçeklemesidir. Proje Jim Hugunin tarafından başlatılmış, Hugunin 5 Eylül 2006'da yayınlanan 1.0 sürümüne kadar aktif olarak katkıda bulunmuştur. IronPython 2.0 10 Aralık 2008'de piyasaya sürüldü. 1.0 sürümünden sonra, 2.7 Beta 1 sürümüne kadar Microsoft'ta küçük bir ekip tarafından geliştirildi. Hugunin'in Google'da çalışmaya başlamasının ardından Microsoft, IronPython'u geliştirmeyi 2010 yılının sonlarında sonlandırdı. Proje şu anda GitHub'da bir grup gönüllü tarafından yürütülmektedir. Ücretsiz ve açık kaynaklı bir yazılımdır ve Microsoft Visual Studio IDE için ücretsiz ve açık kaynaklı bir uzantı olan Visual Studio için Python Tools (PTVS) ile uygulanabilir.

<span class="mw-page-title-main">Anaconda (Python dağıtımı)</span>

Anaconda ücretsiz ve açık kaynaklı, Python ve R programlama dillerinin bilimsel hesaplama kullanımında paket yönetimini kolaylaştırmayı amaçlayan bir özgür ve açık kaynaklı dağıtımdır. Paket sürümleri conda paket yönetim sistemi ile yönetilir. Anaconda dağıtımı Windows, Linux ve MacOS işletim sistemlerinde kullanılabilen veri bilimi paketleri içerir.

<span class="mw-page-title-main">TensorFlow</span>

TensorFlow, makine öğrenimi için ücretsiz ve açık kaynaklı bir yazılım kütüphanesidir. Bir dizi görevde kullanılabilir, ancak derin sinir ağlarının eğitimi ve çıkarımına özel olarak odaklanmaktadır.

Pozitif gerçek sayılardan oluşan dizisindeki her eleman, kendisinden önceki tüm elemanların toplamından daha büyükse, bu diziye süper artan dizi denir.

pandas

pandas, veri işlemesi ve analizi için Python programlama dilinde yazılmış olan bir yazılım kütüphanesidir. Bu kütüphane temel olarak zaman etiketli serileri ve sayısal tabloları işlemek için bir veri yapısı oluşturur ve bu şekilde çeşitli işlemler bu veri yapısı üzerinde gerçekleştirilebilir olur. Yazılım ücretsizdir ve bir çeşit BSD ile lisansına sahiptir. Yazılım ismini bir ekonometri terimi olan veri panelinden almıştır. Bir veri paneli birçok zaman aralığı içinde farklı gözlemlerin işlenebildiği yapıyı tarif eder.

<span class="mw-page-title-main">Python Paket Dizini</span>

Python Paket Dizini, PyPI olarak kısaltılır ve Peynir Dükkanı olarak da bilinir, Python için resmi bir üçüncü taraf yazılım deposudur. Perl için CPAN deposuna ve R için CRAN deposuna benzer. PyPI, bir hayır kurumu olan Python Software Foundation tarafından işletilmektedir. Bazı paket yöneticileri, pip dahil, PyPI'yi paketler ve bağımlılıkları için varsayılan kaynak olarak kullanır.

Bilgisayar biliminde dizi programlama, işlemlerin bir kerede tüm değerler kümesine uygulanmasına izin veren çözümleri ifade eder. Bu tür çözümler, bilimsel ve mühendislik ortamlarında yaygın olarak kullanılmaktadır.

<span class="mw-page-title-main">Matplotlib</span>

Matplotlib, Python programlama dili ve sayısal matematik uzantısı NumPy için bir çizim kitaplığıdır. Tkinter, wxPython, Qt veya GTK gibi genel amaçlı GUI araç setlerini kullanan uygulamalara grafikleri yerleştirmek için nesne yönelimli bir API sağlar. Ayrıca, kullanılması önerilmese de, MATLAB'ınkine çok benzeyecek şekilde tasarlanmış, bir durum makinesine dayalı bir yordamsal "plab" arabirimi vardır. SciPy, Matplotlib'i kullanır.

Burada, sayısal analiz veya veri analizi için kullanılmak üzere tasarlanmış önemli son kullanıcı bilgisayar uygulamaları listelenmiştir: