Skip to content

NumPy: Auf- und Abrunden der Elemente eines ndarray (np.floor, trunc, ceil)

Python

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.