Я пытаюсь прочитать двоичный файл, состоящий из 2 байтовых поплавков, но я не могу получить нужные значения. Кажется, что struct.unpack работает только для 4 байтовых поплавков, и я не уверен, что еще доступно, кроме того, что вы делаете полностью вручную. Есть какой-либо способ сделать это? Любая помощь будет очень высоко ценится.Half-Precision (2 байт) cast to Float in Python
ответ
У вас уже есть большая часть с numpy.fromfile
. Вместо того, чтобы использовать numpy.frombuffer
:
>>> np.frombuffer(buffer("\0\0"), dtype=np.float16)[0]
0.0
>>> np.frombuffer(buffer("\x00\x3c"), dtype=np.float16)[0]
1.0
Если данные имеет известную форму, вы можете разобрать структуры, создавая DTYPE с соответствующей планировкой.
работает без 'buffer()': 'np.frombuffer (b '\ x00 \ x3c', dtype = '
Вы можете разместить их до 4-байтовых одноточечных поплавков; Есть несколько людей, которые уже сделали gruntwork для вас:
http://davidejones.com/blog/1413-python-precision-floating-point/
http://fpmurphy.blogspot.no/2008/12/half-precision-floating-point-format_14.html
Они все разобрать формат в это трехсторонним как указано на Wikipedia article on the format, откладывая 2 байта на 4 байта с одним предварительным cision float, а затем передать это обратно в модуль struct python для преобразования этого в float python.
- 1. «Cast» to int in Python 3.4
- 2. Cast int16_t memory to float
- 3. cast varchar to float to bigint
- 4. str to float error in csv python
- 5. Google Line Chart cast float to integer
- 6. python float to in int conversion
- 7. единство 3d cast object to float
- 8. C++ Cast float * to glm :: vec3
- 9. Python: Convert 2 ints to float
- 10. Python: convert 2 ints to 32 float
- 11. Объявить float или cast float?
- 12. Python String to float
- 13. Python float to ratio
- 14. CAST unsigned to signed int in MySql
- 15. Преобразование double [] [] in to float [] []
- 16. Float to binary in C++
- 17. Python unicode to float error
- 18. Python: ufloat to float
- 19. Python: Cast int to double
- 20. python cast object to int
- 21. Python variable to float list
- 22. Math.Floor vs cast to integer in C#
- 23. C - cast void * to structure in thrd_create()
- 24. String to int cast in php
- 25. int to float conversion in Mongo find
- 26. C++ float in Python float неправильное преобразование
- 27. Cast to int не работает в Python
- 28. Float point to Hex in C#
- 29. Static Cast (int) to (float) без десятичных знаков
- 30. Append float to list with for loop in python
Ah, https://en.wikipedia.org/wiki/Half-precision_floating-point_format –
Собственный размер и выравнивание определяются с помощью выражения 'sizeof' компилятора C. Это всегда сочетается с собственным байтовым порядком. Поэтому я не вижу, что вы можете сделать это с помощью текущего структурного модуля, если вы не расширите его, чтобы включить поддержку поплавков Half-Precision. –
Ну, я знаю, что это можно сделать с numpy для целых файлов с помощью: data = np.fromfile (f, dtype = 'uint16') data = self.data.reshape ((len (self.channel_names), - 1), order = 'F'). astype ('float') Но это работает только для целых файлов .... – Cenoc