Numpy: ndarray tidak menerima memoryview untuk buffer= di bawah python2

Dibuat pada 2 Jun 2015  ·  4Komentar  ·  Sumber: numpy/numpy

Halo di atas sana.

Saya telah menemukan bahwa ndarray(buffer=memoryview) gagal pada 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>

Membuat ndarray yang didukung oleh memoryview gagal:

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

meskipun berhasil jika kita meneruskan memoryview ke array():

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] bekerja pada python 3, tentu saja.

Terimakasih sebelumnya,
Kirill

01 - Enhancement

Semua 4 komentar

IIRC, kami memutuskan untuk tidak mendukung memoryview di Python 2 karena hanya tersedia untuk 2.7. Namun, itu telah di-backport ke 2.6 dan kami tidak lagi mendukung versi sebelumnya, jadi kami mungkin harus meninjau kembali keputusan itu.

Ya. Harap dicatat itu sudah didukung pada Python 2 - array() menerima memoryview ([8-12] di atas). Hanya konstruktor ndarray yang tidak menerima memoryview untuk argumen buffer=.

Kami ingin memiliki dukungan yang lebih baik untuk memoryview juga

Menutup ini, masalah Python 2.x saja tidak lagi relevan mengingat kami akan segera menghentikan dukungan untuk 2.7.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

astrofrog picture astrofrog  ·  4Komentar

dmvianna picture dmvianna  ·  4Komentar

kevinzhai80 picture kevinzhai80  ·  4Komentar

MorBilly picture MorBilly  ·  4Komentar

Foadsf picture Foadsf  ·  3Komentar