
Sie können np.floor(), np.trunc(), np.ceil() usw. verwenden, um sterben Elemente eines NumPy-Arrays ndarray auf- und abzurunden.
Bei der Berücksichtigung negativer Werte gibt es vier Arten des Auf- und Abrundens.
Dieser Artikel hat folgenden Inhalt.
- Abrunden (= gegen minus unendlich runden):
np.floor()
- Auf Nullrunden:
np.trunc(), np.fix(), cast to int
- Aufrunden (= gegen positiv unendlich runden):
np.ceil()
- Auf unendlich runden
Beachten Sie, dass np.rint() und np.around() zum Runden auf gerade Werte used Werden.
Siehe den following Artikel zum Auf-/Abrunden von Dezimalstellen mit der Standard-Mathematik der Python-Bibliothek.
Das folgende numpy.ndarray WIRD im Beispielcode verwendet.
import numpy as np
print(np.__version__)
# 1.19.4
a = np.array([[10.0, 10.1, 10.9], [-10.0, -10.1, -10.9]])
print(a)
# [[ 10. 10.1 10.9]
# [-10. -10.1 -10.9]]
Abrunden (= gegen minus unendlich runden):np.floor()
Verwenden Sie np.floor(), um auf minus unendlich zu runden.
print(np.floor(a))
# [[ 10. 10. 10.]
# [-10. -11. -11.]]
print(np.floor(a).dtype)
# float64
Beachten Sie, dass der Datentyp des Rückgabewerts immer noch eine Fließkommazahl ist. Wenn Sie es in eine Ganzzahl int konvertieren möchten, verwenden Sie astype(). Dasselbe gilt für np.trunc(), np.ceil() usw., die unten beschrieben werden.
print(np.floor(a).astype(int))
# [[ 10 10 10]
# [-10 -11 -11]]
Es ist auch möglich, einen Skalarwert anzugeben. Dasselbe gilt auch für np.trunc(), np.ceil() usw.
print(np.floor(10.1))
# 10.0
Auf Nullrunden:np.trunc(), np.fix(), cast to int
Verwenden Sie np.trunc(), um auf Null zu runden.
print(np.trunc(a))
# [[ 10. 10. 10.]
# [-10. -10. -10.]]
np.fix() rundet ebenfalls auf Null ab.
print(np.fix(a))
# [[ 10. 10. 10.]
# [-10. -10. -10.]]
Das Umwandeln des Datentyps von einer Gleitkommazahl float in eine Ganzzahl int mit astype() rundet ebenfalls auf Null.
print(a.astype(int))
# [[ 10 10 10]
# [-10 -10 -10]]
Aufrunden (= gegen positiv unendlich runden):np.ceil()
Verwenden Sie np.ceil(), um auf positiv unendlich zu runden.
print(np.ceil(a))
# [[ 10. 11. 11.]
# [-10. -10. -10.]]
Auf unendlich runden
Ab NumPy 1.20 ist keine Funktion zum Runden auf Unendlich vorgesehen. Beispiel kann dies wie folgt durchgeführt werden.
print(np.copysign(np.ceil(np.abs(a)), a))
# [[ 10. 11. 11.]
# [-10. -11. -11.]]
Das ursprüngliche ndarray wird mit np.abs() in einen absoluten Wert umgewandelt, mit np.ceil() aufgerundet und mit np.copysign() auf sein ursprüngliches Vorzeichen zurückgeführt.