Numpy: ndarray لا يقبل memoryview للمخزن المؤقت = تحت python2

تم إنشاؤها على ٢ يونيو ٢٠١٥  ·  4تعليقات  ·  مصدر: numpy/numpy

مرحبا هناك.

اكتشفت أن ndarray(buffer=memoryview) فشل في Python 2:

In [1]: sys.version
Out[1]: '2.7.10 (default, May 26 2015, 13:16:40) \n[GCC 4.9.2]'

In [2]: numpy.__version__
Out[2]: '1.10.0.dev0+9e7a0b2'


In [3]: b = bytearray([1,2,3])

In [4]: b
Out[4]: bytearray(b'\x01\x02\x03')

In [5]: m = memoryview(b)

In [6]: m
Out[6]: <memory at 0x7fa1f4e59b50>

فشل إنشاء ndarray مدعومًا بواسطة MemoryView:

In [7]: a = ndarray((3,), buffer=m, dtype=uint8)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-32-1528204f5358> in <module>()
----> 1 a = ndarray((3,), buffer=m, dtype=uint8)

TypeError: expected a readable buffer object

على الرغم من نجاحها إذا مررنا memoryview إلى المصفوفة ():

In [8]: a = array(m, copy=False)

In [9]: a
Out[9]: array([1, 2, 3], dtype=uint8)

In [10]: a[0] = 5

In [11]: a
Out[11]: array([5, 2, 3], dtype=uint8)

In [12]: b
Out[12]: bytearray(b'\x05\x02\x03')

[7] يعمل على Python 3 بالطبع.

شكرا مسبقا،
كيريل

01 - Enhancement

ال 4 كومينتر

IIRC ، قررنا عدم دعم Memoryview في Python 2 لأنه كان متاحًا فقط لـ 2.7. ومع ذلك ، فقد تم نقله إلى الإصدار 2.6 ولم نعد ندعم الإصدارات السابقة ، لذلك من المحتمل أن نعيد النظر في هذا القرار.

نعم. يرجى ملاحظة أنه مدعوم بالفعل في Python 2 - تقبل المصفوفة () memoryview ([8-12] أعلاه). لا يقبل مُنشئ ndarray فقط memoryview للمخزن المؤقت = وسيطة.

نود أن نحصل على دعم أفضل لبرنامج Memoryview أيضًا

عند إغلاق هذا ، لم تعد مشكلات Python 2.x فقط ذات صلة نظرًا لأننا نسقط الدعم لـ 2.7 قريبًا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

toddrjen picture toddrjen  ·  4تعليقات

keithbriggs picture keithbriggs  ·  3تعليقات

dmvianna picture dmvianna  ·  4تعليقات

inducer picture inducer  ·  3تعليقات

perezpaya picture perezpaya  ·  4تعليقات