Numpy Floor Float Werte auf int
Nov 23 2020
Ich habe eine Reihe von Floats und möchte sie auf die nächste Ganzzahl reduzieren, damit ich sie als Indizes verwenden kann.
Zum Beispiel:
In [2]: import numpy as np
In [3]: arr = np.random.rand(1, 10) * 10
In [4]: arr
Out[4]:
array([[4.97896461, 0.21473121, 0.13323678, 3.40534157, 5.08995577,
6.7924586 , 1.82584208, 6.73890807, 2.45590354, 9.85600841]])
In [5]: arr = np.floor(arr)
In [6]: arr
Out[6]: array([[4., 0., 0., 3., 5., 6., 1., 6., 2., 9.]])
In [7]: arr.dtype
Out[7]: dtype('float64')
Sie sind nach dem Bodenbelag immer noch schwimmend. Gibt es eine Möglichkeit, sie automatisch in ganze Zahlen umzuwandeln?
Antworten
2 Jocker Nov 23 2020 at 12:01
Ich bearbeite die Antwort mit der @ DanielF-Erklärung: "Etage konvertiert nicht in eine Ganzzahl, sondern gibt nur Gleitkommazahlen mit ganzzahligen Werten an. Sie benötigen also immer noch einen Astype, um in int zu wechseln." Überprüfen Sie diesen Code, um die Lösung zu verstehen:
import numpy as np
arr = np.random.rand(1, 10) * 10
print(arr)
arr = np.floor(arr).astype(int)
print(arr)
OUTPUT:
[[2.76753828 8.84095843 2.5537759 5.65017407 7.77493733 6.47403036
7.72582766 5.03525625 9.75819442 9.10578944]]
[[2 8 2 5 7 6 7 5 9 9]]
1 vegiv Nov 23 2020 at 12:08
Warum nicht einfach verwenden:
np.random.randint(1,10)