์๋ ํ์ธ์.
๋๋ ndarray(buffer=memoryview)
๊ฐ ํ์ด์ฌ 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>
memoryview์์ ์ง์ํ๋ ndarray ์์ฑ ์คํจ:
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
array()์ 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] ๋ฌผ๋ก ํ์ด์ฌ 3์์ ์๋ํฉ๋๋ค.
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
ํค๋ฆด
IIRC์์๋ Python 2.7์์๋ง ์ฌ์ฉํ ์ ์์๋ memoryview๋ฅผ ์ง์ํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ 2.6์ผ๋ก ๋ฐฑํฌํธ๋์์ผ๋ฉฐ ๋ ์ด์ ์ด์ ๋ฒ์ ์ ์ง์ํ์ง ์์ผ๋ฏ๋ก ๊ทธ ๊ฒฐ์ ์ ๋ค์ ๋ด๋ ค์ผ ํฉ๋๋ค.
๋ค. ์ด๋ฏธ Python 2์์ ์ง์๋๋ค๋ ์ ์ ์ ์ํ์ญ์์ค. array()๋ memoryview๋ฅผ ํ์ฉํฉ๋๋ค(์์ [8-12]). ndarray ์์ฑ์๋ง buffer= ์ธ์์ ๋ํ memoryview๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค.
memoryview์ ๋ํ ์ง์๋ ๊ฐ์ ๋์์ผ๋ฉด ํฉ๋๋ค.
์ด๊ฒ์ ๋ซ์ผ๋ฉด ๊ณง 2.7์ ๋ํ ์ง์์ด ์ค๋จ๋๋ค๋ ์ ์ ๊ฐ์ํ ๋ Python 2.x ์ ์ฉ ๋ฌธ์ ๋ ๋ ์ด์ ๊ด๋ จ์ด ์์ต๋๋ค.