كما ورد في xlwt :
فيما يلي فحص للسلوك غير المترابط (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.
هذا صحيح - python 'int' إما 32 أو 64 بت (اعتمادًا على ملف
يبني؛ أنت تستخدم python 32 بت) ، لذلك إما np.int32 أو np.int64
مشتق منه. np.float32 ليس مثيلًا لـ "float" أيضًا ، لأن
بالمثل يتم تخزين Python 'float' بدقة مزدوجة.
(حقًا حتى هذا سخيف لأن numpy ints _ ليست _ مثيلاً لـ 'int'
أو "تطفو" ، لكن أيا كان.)
isinstance (...، int) هي الأداة الخاطئة لما تحاول القيام به. اذا أنت
تريد اكتشاف الأعداد الصحيحة بشكل عام باستخدام أنواع numpy ، أبسط شيء
do isinstance (...، np. صحيحة).
يوم السبت ، 26 كانون الثاني (يناير) 2013 الساعة 8:15 مساءً ، كتب دانيال فيانا [email protected] :
كما ورد في xlwt https://github.com/python-excel/xlwt/issues/15 :
فيما يلي فحص للسلوك غير المترابط (Python 2.7.3 ، numpy 1.6.2)
استيراد numpy >>> data = [t (123456) for t in (numpy.int32، numpy.int64، numpy.float64)] >>> [type (d) for d in data] [
و و ] >>> البيانات [123456، 123456، 123456.0] >>> check_types = (int، long، float) >>> لـ d في البيانات: ... لأنواع c in check : ... 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 الأرقام باستخدام وحدة الأرقام. إغلاق هذا على النحو ذي الصلة.
التعليق الأكثر فائدة
هذا صحيح - python 'int' إما 32 أو 64 بت (اعتمادًا على ملف
يبني؛ أنت تستخدم python 32 بت) ، لذلك إما np.int32 أو np.int64
مشتق منه. np.float32 ليس مثيلًا لـ "float" أيضًا ، لأن
بالمثل يتم تخزين Python 'float' بدقة مزدوجة.
(حقًا حتى هذا سخيف لأن numpy ints _ ليست _ مثيلاً لـ 'int'
أو "تطفو" ، لكن أيا كان.)
isinstance (...، int) هي الأداة الخاطئة لما تحاول القيام به. اذا أنت
تريد اكتشاف الأعداد الصحيحة بشكل عام باستخدام أنواع numpy ، أبسط شيء
do isinstance (...، np. صحيحة).
يوم السبت ، 26 كانون الثاني (يناير) 2013 الساعة 8:15 مساءً ، كتب دانيال فيانا [email protected] :