Numpy: ndarray๋Š” python2์—์„œ buffer=์— ๋Œ€ํ•œ memoryview๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2015๋…„ 06์›” 02์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: numpy/numpy

์•ˆ๋…•ํ•˜์„ธ์š”.

๋‚˜๋Š” 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์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
ํ‚ค๋ฆด

01 - Enhancement

๋ชจ๋“  4 ๋Œ“๊ธ€

IIRC์—์„œ๋Š” Python 2.7์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ memoryview๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 2.6์œผ๋กœ ๋ฐฑํฌํŠธ๋˜์—ˆ์œผ๋ฉฐ ๋” ์ด์ƒ ์ด์ „ ๋ฒ„์ „์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ทธ ๊ฒฐ์ •์„ ๋‹ค์‹œ ๋‚ด๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋„ค. ์ด๋ฏธ Python 2์—์„œ ์ง€์›๋œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. array()๋Š” memoryview๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค(์œ„์˜ [8-12]). ndarray ์ƒ์„ฑ์ž๋งŒ buffer= ์ธ์ˆ˜์— ๋Œ€ํ•œ memoryview๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

memoryview์— ๋Œ€ํ•œ ์ง€์›๋„ ๊ฐœ์„ ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋‹ซ์œผ๋ฉด ๊ณง 2.7์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋œ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ Python 2.x ์ „์šฉ ๋ฌธ์ œ๋Š” ๋” ์ด์ƒ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰