Ich möchte ein NumPy (Version 1.11.0) Array von float64
zu int64
konvertieren. Ich möchte, dass diese Operation mit ganzen Zahlen durchgeführt werden kann, aber nicht mit ganzen Zahlen.Convert float64 zu int64 mit "sicher"
war mein Verständnis, dass ich casting=safe
verwenden konnte, obwohl klar mein Verständnis falsch war ...
Ich hoffe, dass die folgenden funktionieren würde:
np.array([1.0]).astype(int, casting='safe')
Und dass dies fehlschlagen:
np.array([1.1]).astype(int, casting='safe')
jedoch beide mit diesem Fehler fehlschlagen:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-51-7261ddf00794> in <module>()
1 import numpy as np
2 print(np.__version__)
----> 3 np.array([1.0]).astype(int, casting='safe')
TypeError: Cannot cast array from dtype('float64') to dtype('int64') according to the rule 'safe'
Ich vermute, ich habe ein grundlegendes Missverständnis, was sicheres Casting bedeutet, also ist das vielleicht nicht der beste Weg, dies zu erreichen, gibt es einen besseren Weg für das erste Beispiel, aber das zweite zu scheitern?
Ich glaube, "sicher" ist für Casts, in denen keine Informationen verloren gehen. Es ist keine Operation, die sich um den Wert kümmert, sondern nur der Typ. Mit anderen Worten ist 'float' ->' int' keine sichere Transformation für die gesamte Domäne von 'float'. Die Rückseite sollte jedoch sicher sein. – ebolyen