Une fonction de partition peut être réalisée avec par morceaux de NumPy.
f(x) = \left\{
\begin{array}{ll}
x^2 & (x \geq 0) \\
0 & (x \lt 0)
\end{array}
\right.
Ceci est écrit par morceaux comme suit.
import numpy as np
x = np.arange(-4, 5)
np.piecewise(x, [x >= 0, x < 0], [lambda v: v ** 2, 0])
Quand tu fais ça,
array([ 0, 0, 0, 0, 0, 1, 4, 9, 16])
Sera. C'est le carré de x dans la plage de x> = 0 et 0 dans la plage de x <0.
CuPy ne prend pas en charge par morceaux (à partir de la v7.2), il sera donc décrit d'une autre manière. .. Écrivez sans utiliser d'instructions if avec des performances médiocres.
C'est facile à écrire, additionnez simplement le résultat de la multiplication de la condition de classification et de la valeur de la fonction.
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
Quand tu fais ça,
array([ 0, 0, 0, 0, 0, 1, 4, 9, 16])
Et le même résultat que par morceaux.
Bien entendu, cette méthode d'écriture est également valable pour NumPy.
Recommended Posts