[PYTHON] Schreiben Sie NumPy stückweise für CuPy um

NumPy stückweise

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.

Wie man piesewise nicht benutzt

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

Schreiben Sie NumPy stückweise für CuPy um
Berechnungsgeschwindigkeit der Indizierung für ein numpy quadratisches Array
Über alles von numpy
Funktion von NumPy einstellen
Vergleich der Farberkennungsmethoden in OpenCV inRange, numpy, cupy
Summe mehrerer Numpy-Arrays (Summe)
Über alle von numpy (2.)
Prozentsatz von LIKE für Pymysql
Übersicht über Docker (für Anfänger)
Implementierung von Scale-Space für SIFT
Geben Sie csv mit unterschiedlicher Anzahl von Ziffern für jede Spalte mit numpy aus