Numpy: ndarray n'accepte pas memoryview pour buffer= sous python2

Créé le 2 juin 2015  ·  4Commentaires  ·  Source: numpy/numpy

Bonjour là-haut.

J'ai découvert que ndarray(buffer=memoryview) échoue sur 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>

La création de ndarray soutenu par memoryview échoue :

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

bien qu'il réussisse si nous passons memoryview à 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] fonctionne sur python 3, bien sûr.

Merci d'avance,
Kirill

01 - Enhancement

Tous les 4 commentaires

IIRC, nous avons décidé de ne pas prendre en charge memoryview dans Python 2 car il n'était disponible que pour 2.7. Cependant, il a été rétroporté vers 2.6 et nous ne prenons plus en charge les versions antérieures, nous devrions donc probablement revoir cette décision.

Oui. Veuillez noter qu'il est déjà pris en charge sur Python 2 - array() accepte memoryview ([8-12] ci-dessus). Seul le constructeur ndarray n'accepte pas memoryview pour l'argument buffer=.

Nous aimerions également avoir un meilleur support pour memoryview

En fermant ceci, les problèmes de Python 2.x uniquement ne sont plus pertinents étant donné que nous abandonnons bientôt la prise en charge de 2.7.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

kevinzhai80 picture kevinzhai80  ·  4Commentaires

thouis picture thouis  ·  4Commentaires

toddrjen picture toddrjen  ·  4Commentaires

manuels picture manuels  ·  3Commentaires

'
Pezhvuk picture Pezhvuk  ·  4Commentaires