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
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.