<p>numpy.int64 no es una instancia de int</p>

Creado en 27 ene. 2013  ·  4Comentarios  ·  Fuente: numpy/numpy

Como se informó en xlwt :

Aquí hay un examen del comportamiento numpy (Python 2.7.3, numpy 1.6.2)

>>> import numpy
>>> data = [t(123456) for t in (numpy.int32, numpy.int64, numpy.float64)]
>>> [type(d) for d in data]
[<type 'numpy.int32'>, <type 'numpy.int64'>, <type 'numpy.float64'>]
>>> data
[123456, 123456, 123456.0]
>>> check_types = (int, long, float)
>>> for d in data:
...     for c in check_types:
...         print type(d), repr(c), isinstance(d, c)
...
<type 'numpy.int32'> <type 'int'> True
<type 'numpy.int32'> <type 'long'> False
<type 'numpy.int32'> <type 'float'> False
<type 'numpy.int64'> <type 'int'> False
<type 'numpy.int64'> <type 'long'> False
<type 'numpy.int64'> <type 'float'> False
<type 'numpy.float64'> <type 'int'> False
<type 'numpy.float64'> <type 'long'> False
<type 'numpy.float64'> <type 'float'> True
>>>

Parece que numpy ha hecho el trabajo de hacer que su int32 y float64 sean reconocibles por otro software, pero no por int64.

Proposal numpy.core

Comentario más útil

Esto es correcto: python 'int' es de 32 o 64 bits (dependiendo de su
construir; está usando una python de 32 bits), por lo que np.int32 o np.int64
deriva de ella. np.float32 tampoco es una instancia de 'float', porque
de manera similar, Python 'float' se almacena específicamente en doble precisión.

(Realmente, incluso esto es una tontería porque muchos ints _no son_ instancias de 'int'
o 'flotar', pero lo que sea).

isinstance (..., int) es la herramienta incorrecta para lo que está intentando hacer. Si tu
quiero detectar enteros en general usando tipos numéricos, lo más simple para
hacer es isinstancia (..., np.integer).

El sábado 26 de enero de 2013 a las 8:15 p.m., Daniel Vianna [email protected] escribió:

Como se informa en xlwt https://github.com/python-excel/xlwt/issues/15 :

Aquí hay un examen del comportamiento numpy (Python 2.7.3, numpy 1.6.2)

importar número >>> datos = [t (123456) para t en (numpy.int32, numpy.int64, numpy.float64)] >>> [escriba (d) para d en datos] [,,] >>> datos [123456, 123456, 123456.0] >>> check_types = (int, long, float) >>> for d in data: ... for c in check_ types: ... print type (d), repr (c), isinstancia (d, c) ...CiertoFalsoFalsoFalsoFalsoFalsoFalsoFalsoVerdadero >>>

Parece que numpy ha hecho el trabajo para hacer su int32 y float64
reconocible por otro software pero no int64.

-
Responda a este correo electrónico directamente o véalo en Gi

Todos 4 comentarios

Esto es correcto: python 'int' es de 32 o 64 bits (dependiendo de su
construir; está usando una python de 32 bits), por lo que np.int32 o np.int64
deriva de ella. np.float32 tampoco es una instancia de 'float', porque
de manera similar, Python 'float' se almacena específicamente en doble precisión.

(Realmente, incluso esto es una tontería porque muchos ints _no son_ instancias de 'int'
o 'flotar', pero lo que sea).

isinstance (..., int) es la herramienta incorrecta para lo que está intentando hacer. Si tu
quiero detectar enteros en general usando tipos numéricos, lo más simple para
hacer es isinstancia (..., np.integer).

El sábado 26 de enero de 2013 a las 8:15 p.m., Daniel Vianna [email protected] escribió:

Como se informa en xlwt https://github.com/python-excel/xlwt/issues/15 :

Aquí hay un examen del comportamiento numpy (Python 2.7.3, numpy 1.6.2)

importar número >>> datos = [t (123456) para t en (numpy.int32, numpy.int64, numpy.float64)] >>> [escriba (d) para d en datos] [,,] >>> datos [123456, 123456, 123456.0] >>> check_types = (int, long, float) >>> for d in data: ... for c in check_ types: ... print type (d), repr (c), isinstancia (d, c) ...CiertoFalsoFalsoFalsoFalsoFalsoFalsoFalsoVerdadero >>>

Parece que numpy ha hecho el trabajo para hacer su int32 y float64
reconocible por otro software pero no int64.

-
Responda a este correo electrónico directamente o véalo en Gi

Además, en Python 3, ninguno de los tipos de enteros de Numpy está relacionado con el tipo int nativo (que es un entero de tamaño variable).

Creo que Nathaniel tiene toda la razón en su nota sobre el informe original. Numpy debería heredar / registrar numbers.Integral etc., lo que encaja bien en la eliminación de python 2.4 y 2.5. Si alguien quiere un amplio reconocimiento de los me gusta enteros, debería buscar numbers.Integral (o tal vez probar el método similar al tecleo de pato __index__ ) de todos modos.

A partir de # 4547 y 1.9.0, numpy registra números con el módulo numérico. Cerrando esto como relacionado.

¿Fue útil esta página
0 / 5 - 0 calificaciones