<p>numpy.int64 не является экземпляром int</p>

Созданный на 27 янв. 2013  ·  4Комментарии  ·  Источник: numpy/numpy

Как сообщается в xlwt :

Вот исследование поведения 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
>>>

Похоже, numpy проделал работу, чтобы сделать свои int32 и float64 распознаваемыми другим программным обеспечением, но не int64.

Proposal numpy.core

Самый полезный комментарий

Это правильно - python int может быть 32 или 64 бит (в зависимости от вашего
строить; вы используете 32-битный питон), поэтому либо np.int32, либо np.int64
происходит от этого. np.float32 также не является экземпляром float, потому что
аналогично Python "float" специально хранится с двойной точностью.

(На самом деле даже это глупо, потому что numpy ints _aren't_ экземпляры 'int'
или «плавать», но что угодно.)

isinstance (..., int) - неправильный инструмент для того, что вы пытаетесь сделать. если ты
хотите обнаруживать целые числа в целом, используя типы numpy, самый простой способ
do isinstance (..., np.integer).

В субботу, 26 января 2013 г., в 20:15 Даниэль Вианна написал на [email protected] :

Как сообщается в xlwt https://github.com/python-excel/xlwt/issues/15 :

Вот исследование поведения 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] [,,] >>> 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) ...ПравдаЛожьЛожьЛожьЛожьЛожьЛожьЛожьВерно >>>

Похоже, numpy сделал работу, чтобы сделать свои int32 и float64
распознается другим программным обеспечением, но не int64.

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/numpy/numpy/issues/2951.

Все 4 Комментарий

Это правильно - python int может быть 32 или 64 бит (в зависимости от вашего
строить; вы используете 32-битный питон), поэтому либо np.int32, либо np.int64
происходит от этого. np.float32 также не является экземпляром float, потому что
аналогично Python "float" специально хранится с двойной точностью.

(На самом деле даже это глупо, потому что numpy ints _aren't_ экземпляры 'int'
или «плавать», но что угодно.)

isinstance (..., int) - неправильный инструмент для того, что вы пытаетесь сделать. если ты
хотите обнаруживать целые числа в целом, используя типы numpy, самый простой способ
do isinstance (..., np.integer).

В субботу, 26 января 2013 г., в 20:15 Даниэль Вианна написал на [email protected] :

Как сообщается в xlwt https://github.com/python-excel/xlwt/issues/15 :

Вот исследование поведения 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] [,,] >>> 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) ...ПравдаЛожьЛожьЛожьЛожьЛожьЛожьЛожьВерно >>>

Похоже, numpy сделал работу, чтобы сделать свои int32 и float64
распознается другим программным обеспечением, но не int64.

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/numpy/numpy/issues/2951.

Кроме того, в Python 3 ни один из целочисленных типов Numpy не связан с собственным типом int (который является целым числом переменного размера).

Я думаю, что Натаниэль совершенно прав в своем примечании к исходному отчету. Numpy должен наследовать / регистрировать numbers.Integral и т. Д., Что хорошо вписывается в отбрасывание python 2.4 и 2.5. Если кто-то хочет широкого признания целочисленных лайков, им в любом случае следует проверять наличие numbers.Integral (или, может быть, попробовать аналогичный метод, набирающий __index__ ).

Начиная с # 4547 и 1.9.0, numpy регистрирует числа с помощью числового модуля. Закрытие как связанное.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги