Ebben a cikkben a NumPy témáját elemezzük és elmélyítjük. Az évek során a NumPy sok ember tanulmányozásának és érdeklődésének tárgya volt különböző területeken. A pszichológiától a csillagászaton át a történelemen, az irodalomon és a szociológián keresztül a NumPy visszatérő és releváns téma volt. Ebben a cikkben a NumPy különböző aspektusait szeretnénk feltárni, az eredetétől a mai társadalomra gyakorolt hatásáig. Elemezzük a kultúrára, a tudományra, a művészetre és a mindennapi életre gyakorolt hatását, igyekszünk mélyen és teljes mértékben megérteni jelentőségét a mai világban.
A NumPy nyílt forráskódú kiegészítő csomag a Python programozási nyelvhez, mely a nagy méretű, többdimenziós tömbök és mátrixok használatát támogatja magas szintű matematikai függvénykönyvtárral.
A vektorműveletként ki nem fejezhető algoritmusok általában lassabban futnak le, mert az eredeti Pythonban kell őket végrehajtani, míg a vektorizálás több memóriát igényel (ideiglenes tömböket kell létrehozni, melyek olyan nagyok, mint a bemenet).
Tömbök létrehozása
>>> import numpy as np
>>> x = np.array()
>>> x
array()
>>> y = np.arange(10) # mint a Python "range" függvénye, csak egy tömb az eredménye
>>> y
array()
Alapvető műveletek
>>> a = np.array()
>>> b = np.linspace(0, 2, 4) # egy tömb létrehozása 4 egyenletesen elosztott pontokkal 0-val kezdődően 2-ig.
>>> c = a - b
>>> c
array()
>>> a**2
array()
Általános függvények
>>> a = np.linspace(-np.pi, np.pi, 100)
>>> b = np.sin(a)
>>> c = np.cos(a)
Lineáris algebra
>>> from numpy.random import rand
>>> from numpy.linalg import solve, inv
>>> a = np.array(, , ])
>>> a.transpose()
array(,
,
])
>>> inv(a)
array(,
,
])
>>> b = np.array()
>>> solve(a, b) # ax = b egyenlet megoldása
array()
>>> c = rand(3, 3) # véletlenszerű 3x3-as mátrix létrehozása
>>> c
array(,
,
])
>>> np.dot(a, c) # mátrix szorzás
array(,
,
])
A Python programozási nyelv eredetileg nem numerikus számításokra volt tervezve, de még a tervezés elején felkeltette a kutató- és mérnökközösség figyelmét. Ezért 1995-ben egy matrix-sig nevű érdekcsoport alakult azzal a céllal, hogy egy tömbszámítási csomagot hozzon létre. A csoport tagjai között volt a Python fő tervezője/fenntartója, Guido van Rossum, aki új függvényeket hozott létre a tömbszámítási feladatok megkönnyítésére.[1]
Később Jim Fulton létrehozott egy hasonló csomagot a mátrixszámításokhoz, melyet Jim Hugunin általánosított. Így jött létre a Numeric (Numerical Python, NumPy).[1][2][3]
Hugunin, az MIT-n végzős diák,[3] 1997-ben csatlakozott a CNRI-hez, hogy a JPythonon dolgozzon.
Ezután a rugalmas Numarray csomag jött létre a Numeric helyett.[2] Mára a Numarray és a Numeric is elavult.[4] A Numarray sokkal gyorsabban dolgozott a nagy tömbökkel, de a Numericnél lassabban a kicsikkel. Ezért egy ideig mind a két csomag használatban volt, és azt alkalmazták, amelyik az adott feladatra gyorsabb volt. A Numeric utolsó változatát (v24.2) 2005. november 11-én, a numarrayét (v1.5.2) pedig 2006. augusztus 24-én adták ki.[5]
Egy ideig az volt a törekvés, hogy a Numeric bekerüljön a Python standard könyvtárai közé, de Guido van Rossum úgy vélte, hogy a kód már nem karbantartható eredeti formájában sem.
2005 elején a NumPy fejlesztője, Travis Oliphant egyesítette a két közösséget, így 2006-ban a Numarray és a Numeric csomagokból – a SciPy projekt részeként – létrejött a NumPy v1.0.[2] Hogy a SciPy csomag ne legyen túl nagy, a NumPy-t külön csomagként adták ki.