Universelle Funktionen (ufunc
)#
Eine universelle Funktion, oder ufunc
, ist eine Funktion, die elementweise Operationen auf Daten in ndarrays
durchführt. Man kann sie sich als schnelle vektorisierte Wrapper für einfache Funktionen vorstellen, die einen oder mehrere skalare Werte annehmen und ein oder mehrere skalare Ergebnisse erzeugen.
Viele ufuncs
sind einfache elementweise Transformationen, wie sqrt oder exp:
[1]:
import numpy as np
data = np.arange(10)
[2]:
data
[2]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
[3]:
np.sqrt(data)
[3]:
array([0. , 1. , 1.41421356, 1.73205081, 2. ,
2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ])
[4]:
np.exp(data)
[4]:
array([1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01,
5.45981500e+01, 1.48413159e+02, 4.03428793e+02, 1.09663316e+03,
2.98095799e+03, 8.10308393e+03])
Diese werden als einstellige ufuncs bezeichnet. Andere, wie add oder maximum, nehmen zwei Arrays (also binäre ufuncs) und geben ein einziges Array als Ergebnis zurück:
[5]:
x = np.random.randn(8)
[6]:
y = np.random.randn(8)
[7]:
x
[7]:
array([ 0.27787269, -0.58356193, -0.10184236, 1.35055943, -1.57973878,
1.14278195, -1.08386512, 0.09227202])
[8]:
y
[8]:
array([ 0.32170798, 0.7041202 , -0.22124585, -0.01662225, 0.20266652,
0.53028692, 1.09999517, -0.47938682])
[9]:
np.maximum(x, y)
[9]:
array([ 0.32170798, 0.7041202 , -0.10184236, 1.35055943, 0.20266652,
1.14278195, 1.09999517, 0.09227202])
Hier berechnete numpy.maximum
das elementweise Maximum der Elemente in x
und y
.
Manche ufunc
, wie z.B. modf , eine vektorisierte Version des eingebauten Python divmod, geben mehrere Arrays zurückgeben: die Bruch- und Integralteile eines Gleitkomma-Arrays:
[10]:
data = x * 5
[11]:
data
[11]:
array([ 1.38936344, -2.91780966, -0.50921179, 6.75279713, -7.89869391,
5.71390974, -5.4193256 , 0.46136012])
[12]:
remainder, whole_part = np.modf(x)
[13]:
remainder
[13]:
array([ 0.27787269, -0.58356193, -0.10184236, 0.35055943, -0.57973878,
0.14278195, -0.08386512, 0.09227202])
[14]:
whole_part
[14]:
array([ 0., -0., -0., 1., -1., 1., -1., 0.])
Ufuncs akzeptieren ein optionales out
-Argument, das es euch erlaubt, eure Ergebnisse an ein bestehendes Array zu übertragen, anstatt ein neues zu erstellen:
[15]:
out = np.zeros_like(data)
[16]:
np.add(data, 1)
[16]:
array([ 2.38936344, -1.91780966, 0.49078821, 7.75279713, -6.89869391,
6.71390974, -4.4193256 , 1.46136012])
[17]:
np.add(data, 1, out=out)
[17]:
array([ 2.38936344, -1.91780966, 0.49078821, 7.75279713, -6.89869391,
6.71390974, -4.4193256 , 1.46136012])
[18]:
out
[18]:
array([ 2.38936344, -1.91780966, 0.49078821, 7.75279713, -6.89869391,
6.71390974, -4.4193256 , 1.46136012])
Einige einstellige ufuncs:
Funktion |
Beschreibung |
---|---|
|
berechnet den absoluten Wert elementweise für Ganzzahl-, Gleitkomma- oder komplexe Werte |
|
berechnet die Quadratwurzel aus jedem Element (entspricht |
|
berechnet das Quadrat eines jeden Elements (entspricht |
|
berechnet den Exponenten ex eines jeden Elements |
|
Natürlicher Logarithmus (Basis e), log Basis 10, log Basis 2 bzw. log(1 + x) |
|
berechnet das Vorzeichen jedes Elements: |
|
berechnet die Obergrenze jedes Elements (d.h. die kleinste ganze Zahl, die größer oder gleich dieser Zahl ist) |
|
berechnet die Untergrenze jedes Elements (d.h. die größte ganze Zahl, die kleiner oder gleich jedem Element ist) |
|
rundet Elemente auf die nächste Ganzzahl, wobei der |
|
gibt den gebrochenen und ganzzahligen Teile des Arrays als separate Arrays zurück |
|
gibt ein boolesches Array zurück, das angibt, ob jeder Wert |
|
gibt ein boolesches Array zurück, das angibt, ob jedes Element endlich (non- |
|
reguläre und hyperbolische trigonometrische Funktionen |
|
Inverse trigonometrische Funktionen |
|
berechnet den Wahrheitswert von |
Einige binäre universelle Funktionen:
Funktion |
Beschreibung |
---|---|
|
hinzufügen entsprechender Elemente in Arrays |
|
subtrahiert Elemente im zweiten Array vom ersten Array |
|
Array-Elemente multiplizieren |
|
Dividieren oder Abschneiden des Rests |
|
erhöht Elemente im ersten Array auf die im zweiten Array angegebenen Potenzen |
|
elementweises Maximum; |
|
elementweises Minimum; |
|
Elementweiser Modulus (Rest der Division) |
|
kopiert das Vorzeichen der Werte im zweiten Argument auf die Werte im ersten Argument |
|
Elementweise Vergleiche durchführen, die ein boolesches Array ergeben (entspricht den Infix-Operatoren |
|
berechnet den elementweisen Wahrheitswert der logischen Operation AND ( |
|
berechnet den elementweisen Wahrheitswert der logischen Operation OR ( |
|
berechnet den elementweisen Wahrheitswert der logischen Operation XOR ( |
Hinweis:
Eine vollständige Übersicht über binäre universelle Funktionen findet ihr in Universal functions (ufunc).