[Python-es] Cambio de enteros a flotantes

Ricardo Cárdenes ricardo.cardenes en gmail.com
Mar Mar 14 23:57:41 EDT 2017


2017-03-14 14:18 GMT-10:00 Rolando Paz <flxpaz en gmail.com>:

> Hola Ricardo
>
> Gracias por tu observación, resulta que los avances que he hecho con
> python los he logrado por pura deducción lógica. No tuve formación teórica
> al respecto; mi área profesional es otra. Perdona David por no entender.
>
> Entonces para que los valores internos de un archivo sean enteros de 32
> bits, el tamaño del archivo debe ser múltiplo de 4?
>

Hola Rolando.

El tamaño del archivo se da en bytes de (generalmente) 8 bits. Un entero de
32 bits se compone, por tanto, de 4 bytes, así que si el fichero contiene
sólo la representación binaria de una secuencia de int32, tiene (por
fuerza) que tener un tamaño múltiplo de 4. Dado que no es el caso, entonces
sospechamos que hay algo más.


>
> Estoy seguro que mi diseño digital produce datos enteros con signo de 32
> bits de precisión, y que dentro de estos datos se encuentran potencias en
> función de la frecuencia en un tiempo dado , por lo que deduzco que cuando
> yo obtengo los datos con GULP, ese mismo tipo de datos grabo en mis
> archivos.
>

¿Nos puedes decir algo más sobre el proceso que se usa para adquirir los
datos y guardarlos? ¿Lo haces tú directamente usando algún programa de
adquisición?


>
> Saludos y gracias.
>
> Rolando
>
>
>
>
> El 14 de marzo de 2017, 17:58, Ricardo Cárdenes <
> ricardo.cardenes en gmail.com> escribió:
>
>> Rolando, concéntrate.
>>
>> David te está preguntando si conoces el formato del fichero, porque el
>> que has pasado no coincide con la premisa "colección de enteros de 32
>> bits", porque el tamaño del fichero no es múltiplo de 4.
>>
>> Evidentemente, lo último que has mandado es un array de enteros de 32
>> bits y su correspondiente en coma flotante de 32 bits (con la consiguiente
>> pérdida de precisión), pero no sabemos si los datos son *correctos*, por lo
>> que acabo de mencionar arriba.
>>
>> Saludos,
>> Ricardo
>>
>> 2017-03-14 12:16 GMT-10:00 Rolando Paz <flxpaz en gmail.com>:
>>
>>> Ejecuté este código solo para ver los valores
>>>
>>> import numpy as np
>>>
>>> array_int32 = np.fromfile('pocobe4_r19_v18_r20.dat', dtype=np.int32)
>>> print 'Data int32 signed:'
>>> print array_int32
>>> array_float32 = np.fromfile('pocobe4_r19_v18_r20.dat',
>>> dtype=np.int32).astype(np.float32)
>>> print 'Data float32:'
>>> print array_float32
>>>
>>> Y el resultado es:
>>>
>>> Data int32 signed:
>>> [-1582119980      262146           0 ...,           0           0
>>>            0]
>>> Data float32:
>>> [ -1.58211994e+09   2.62146000e+05   0.00000000e+00 ...,   0.00000000e+00
>>>    0.00000000e+00   0.00000000e+00]
>>>
>>> Creo que sí los convierte a flotantes???
>>>
>>> Saludos
>>>
>>> El 14 de marzo de 2017, 15:48, Rolando Paz <flxpaz en gmail.com> escribió:
>>>
>>>> Hola David
>>>>
>>>> Recién estoy aprendiendo sobre el tema. Me puedes explicar a que te
>>>> refieres con que la distribución de números es uniforme y porqué no debería
>>>> ser así?
>>>>
>>>> Saludos y gracias.
>>>>
>>>> Rolando
>>>>
>>>> El 14 de marzo de 2017, 12:45, Daπid <davidmenhur en gmail.com> escribió:
>>>>
>>>>> Creo que sigue habiendo algo mal. La distribución de números es
>>>>> uniforme en todo el rango de int32.
>>>>>
>>>>> 2017-03-14 18:11 GMT+01:00 Rolando Paz <flxpaz en gmail.com>:
>>>>> > Hola amigos
>>>>> >
>>>>> > Con la ayuda de un amigo Sven Marnach hice esto:
>>>>> >
>>>>> > import numpy as np
>>>>> >
>>>>> > array = np.fromfile('pocobe4_r19_v18_r20.dat',
>>>>> > dtype=np.int32).astype(np.float32)
>>>>> > with open("prueba_out", "wb") as prueba_out:
>>>>> >     prueba_out.write(array.tostring())
>>>>> >
>>>>> > Ahora obtengo un archivo binario.
>>>>> >
>>>>> > Que opinan?
>>>>> >
>>>>> > El 14 de marzo de 2017, 9:12, Kiko <kikocorreoso en gmail.com>
>>>>> escribió:
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> El 14 de marzo de 2017, 16:00, Daπid <davidmenhur en gmail.com>
>>>>> escribió:
>>>>> >>>
>>>>> >>> Lo he probado con el adjunto, y parece que lo que tienes no son
>>>>> >>> objetos de 32 bits, porque el tamaño no es múltiplo. Así que o
>>>>> tienes
>>>>> >>> otro tipo de datos (si fueran 16 bits tendrías casi 11 millones de
>>>>> >>> números), o hay una cabecera. No creo que sean 8 o 16 bits porque
>>>>> la
>>>>> >>> distribución de valores es completamente uniforme, a menos que sean
>>>>> >>> datos aleatorios.
>>>>> >>>
>>>>> >>> genfromtxt y amigos te sirven para leer ficheros de texto, no
>>>>> binarios.
>>>>> >>
>>>>> >>
>>>>> >> Mi culpa. He leído los correos en diagonal...
>>>>> >>
>>>>> >>>
>>>>> >>>
>>>>> >>> 2017-03-14 15:34 GMT+01:00 Rolando Paz <flxpaz en gmail.com>:
>>>>> >>> > Gracias Kiko, lo intentare.
>>>>> >>> >
>>>>> >>> > David al ejecutar el pequeño script sobre mi archivo binario,
>>>>> obtengo
>>>>> >>> > un
>>>>> >>> > archivo binario (supongo de flotantes) pero solo tiene cuatro
>>>>> >>> > valores...
>>>>> >>> >
>>>>> >>> > Adjunto el contenido de cada archivo usando ghex.
>>>>> >>> >
>>>>> >>> > Que opinas?
>>>>> >>> >
>>>>> >>> > Saludos
>>>>> >>> >
>>>>> >>> >
>>>>> >>> > 2017-03-14 8:19 GMT-06:00 Daπid <davidmenhur en gmail.com>:
>>>>> >>> >>
>>>>> >>> >> 2017-03-14 14:41 GMT+01:00 Rolando Paz <flxpaz en gmail.com>:
>>>>> >>> >> > array = np.fromstring("data", dtype=np.int32).astype(np.floa
>>>>> t32)
>>>>> >>> >>
>>>>> >>> >> Te sobran las comillas en "data".
>>>>> >>> >> _______________________________________________
>>>>> >>> >> Python-es mailing list
>>>>> >>> >> Python-es en python.org
>>>>> >>> >> https://mail.python.org/mailman/listinfo/python-es
>>>>> >>> >
>>>>> >>> >
>>>>> >>> >
>>>>> >>> > _______________________________________________
>>>>> >>> > Python-es mailing list
>>>>> >>> > Python-es en python.org
>>>>> >>> > https://mail.python.org/mailman/listinfo/python-es
>>>>> >>> >
>>>>> >>> _______________________________________________
>>>>> >>> Python-es mailing list
>>>>> >>> Python-es en python.org
>>>>> >>> https://mail.python.org/mailman/listinfo/python-es
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> _______________________________________________
>>>>> >> Python-es mailing list
>>>>> >> Python-es en python.org
>>>>> >> https://mail.python.org/mailman/listinfo/python-es
>>>>> >>
>>>>> >
>>>>> >
>>>>> > _______________________________________________
>>>>> > Python-es mailing list
>>>>> > Python-es en python.org
>>>>> > https://mail.python.org/mailman/listinfo/python-es
>>>>> >
>>>>> _______________________________________________
>>>>> Python-es mailing list
>>>>> Python-es en python.org
>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>>
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>>
>>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>>
>>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20170314/d8bdddc5/attachment.html>


Más información sobre la lista de distribución Python-es