Ich möchte in der Lage sein, den Signifikanden und den Exponenten der Fließkommazahlen in NumPy zu extrahieren. Den Exponenten als Integer zu erhalten, ist gut und ok für den Signifikanden. Den Signifikanten als Bitfield zu bekommen wäre noch bequemer.Fließkomma-Signifikanz und Exponent in NumPy extrahieren
Ich bin mir bewusst, dass Python Schwimmer eine hex
Methode haben; Ich möchte jedoch numpy.float32
, Anzahl Arrays und ufuncs verwenden. Ich bin mir auch bewusst von der numpy view
Methode, die ich den Schwimmer als Integer sehen kann und somit als Binär-String:
>>> import numpy as np
>>> b = bin(np.float32(1.23456789).view(np.int32))
'0b111111100111100000011001010010'
>>> b[-23:] # extract last 23 bits of IEEE 754 binary32 float, is significand
'00111100000011001010010'
die Exponenten Extrahierung und melden Sie sich an diese Art und Weise ist nicht bequem, als führender 0s fallen gelassen von bin
. (Ich könnte link-Pad bis 32 Bits mit 0s aber ...)
In jedem Fall, weil bin
ist kein ufunc, das ist nicht bequem und ich müsste über das Array iterieren.
Gibt es keinen bequemeren Ansatz, um das zu tun, was ich will?
Werfen Sie einen Blick auf [diese Antwort] (https://Stackoverflow.com/a/16444786/3214872), es könnte Sie in die richtige Richtung zeigen – GPhilo
@GPhilo: Danke. Tatsächlich scheint diese Antwort klarzustellen, dass es keinen bequemeren Ansatz gibt. – equaeghe
Werfen Sie einen Blick auf ['numpy.frexp'] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.frexp.html) –