Eine Partitionsfunktion kann stückweise mit NumPy realisiert werden.
f(x) = \left\{
\begin{array}{ll}
x^2 & (x \geq 0) \\
0 & (x \lt 0)
\end{array}
\right.
Dies wird stückweise wie folgt geschrieben.
import numpy as np
x = np.arange(-4, 5)
np.piecewise(x, [x >= 0, x < 0], [lambda v: v ** 2, 0])
Wenn Sie dies tun,
array([ 0, 0, 0, 0, 0, 1, 4, 9, 16])
Wird sein. Es ist das Quadrat von x im Bereich von x> = 0 und 0 im Bereich von x <0.
CuPy unterstützt nicht stückweise (ab Version 7.2), daher wird es auf andere Weise beschrieben. .. Schreiben Sie ohne if-Anweisungen mit schlechter Leistung.
Es ist einfach zu schreiben, addieren Sie einfach das Ergebnis der Multiplikation der Klassifizierungsbedingung und des Funktionswerts.
import cupy as cp
x = cp.arange(-4, 5)
positive_condition = x >= 0
positive_value = x ** 2
negative_condition = x < 0
negative_value = 0
positive_condition * positive_value + negative_condition * negative_value
Wenn Sie dies tun,
array([ 0, 0, 0, 0, 0, 1, 4, 9, 16])
Und das gleiche Ergebnis wie stückweise.
Diese Schreibmethode gilt natürlich auch für NumPy.
Recommended Posts