Numpy: np.copy (masked array)์— ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋™์ž‘์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

.... ์—ฌ๊ธฐ์„œ "์˜ˆ๊ธฐ์น˜ ์•Š์€"์€ _I_ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์•˜ ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌธ์„œ ์ˆ˜์ •์ผ ์ˆ˜๋„ ์žˆ๊ณ , np.ma ์ž‘๋™ ๋ฐฉ์‹์„ ๊นจ๋‹ซ์ง€ ๋ชปํ•ด ๊พธ์ค‘์„๋ฐ›์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ์ด ๋™์ž‘์ด ์ ์ ˆํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

In [100]: x = np.ma.ones(5)

In [101]: x.mask = [False,False,True,False,False]

In [102]: np.copy(x)
Out[102]: array([ 1.,  1.,  1.,  1.,  1.])

In [103]: np.ma.copy(x)
Out[103]:
masked_array(data = [1.0 1.0 -- 1.0 1.0],
             mask = [False False  True False False],
       fill_value = 1e+20)

In [104]: np.__version__
Out[104]: '1.8.0.dev-074a40c'

์ ์–ด๋„ ๊ฒฝ๊ณ ๋Š” ์˜ˆ์ƒํ•˜์ง€๋งŒ ์„ ํ˜ธํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • np.copy(x) ๋Š” ๋งˆ์Šคํ‚น ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค (x๋Š” ๋งˆ์Šคํ‚น ๋œ ๋ฐฐ์—ด์ด๋ฏ€๋กœ).
  • np.copy(x) ์€ ๋ฐฐ์—ด์˜ ๋งˆ์Šคํฌ๋ฅผ ํ•ด์ œํ•˜๊ณ  ์žˆ์Œ์„ ๊ฒฝ๊ณ  ํ•œ ๋‹ค์Œ ์œ„์™€ ๋™์ผํ•œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • np.copy(x) ๋Š” ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • np.copy(x) ๋Š” [1,1,nan,1,1] ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค (์ด์ƒ์  ์ผ ์ˆ˜ ์—†์Œ).
00 - Bug numpy.lib

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

1.9-devel์—์„œ ์—ฌ์ „ํžˆ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํŠน์ˆ˜ ์ผ€์ด์Šค ๋งˆ์Šคํ‚น ๋ฐฐ์—ด์—†์ด์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐฐ์—ด ํ˜ธ์ถœ์— subok=True ๋ฅผ ํฌํ•จํ•˜๋„๋ก np.copy์˜ ๋…ผ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๊นŒ?
์—์„œ:

return array(a, order=order, copy=True)

์—:

return array(a, order=order, subok=True, copy=True)

๊ทธ๋ ‡๋‹ค๋ฉด subok์€ np.copy ๋Œ€ํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜ ์—ฌ์•ผํ•˜๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ True ๋˜๋Š” False ์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค. True๋Š” ์ฒซ ๋ฒˆ์งธ ์„ ํ˜ธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  False๋Š” ํ˜„์žฌ ๋™์ž‘์„ ์œ ์ง€ํ•˜์ง€๋งŒ ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ ์ธ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์™„์ „ํžˆ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋‘ ๊ฐ€์ง€ ์†”๋ฃจ์…˜์ด ์ด๋ฏธ์žˆ๋Š” ๊ฒฝ์šฐ subok ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ np.copy ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • .copy() ๋ฐฉ๋ฒ• ์‚ฌ์šฉ
  • np.array(a, subok=True) (๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณต์‚ฌ ๋จ)

๋‚˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ "๋ณต์‚ฌ"๊ฐ€ ์‹ค์ œ๋กœ๋Š” ์‚ฌ๋ณธ์ด๊ณ  ๋”ฐ๋ผ์„œ ๋™์ผํ•œ ์œ ํ˜•์˜ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋˜ ์ฐพ์„ ๊ฒƒ์ด๋ผ๋Š” ์ธ์ƒ์„์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ๊ทธ ๋ฐ˜๋Œ€๋ฅผ ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ numpy ์ „์ฒด๊ฐ€ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋” ์ผ๊ด€๋˜๊ฒŒ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ๋„๋ก ์ž‘์ง€๋งŒ ์œ ์šฉํ•œ ๊ธฐ์—ฌ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (์ด์ „์— ์ข‹์€ ๋Œ€์ฒด๋ฌผ์ด์—†๋Š” np.broadcast_arrays ์—์„œํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ). ๊ทธ๋Ÿฌ๋‚˜ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ๊ธฐ๋ณธ๊ฐ’ ์ธ subok=False ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“ , @jjhelmus , ๋นจ๋ฆฌ ํ™๋ณดํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ๋ณด๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

@shoyer : np.copy๋Š” ์•„๋งˆ๋„ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ๋ชฉ๋ก์— ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜๋„ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์˜ค๋ฆฌ ๋ฐฐ์—ด ์ง€์›-์˜ค๋ฆฌ ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ np.copy
๊ทธ๋ฆฌ๊ณ  np.array๋Š” ์•„๋งˆ๋„ ๋‹ค๋ฅธ ์ผ์„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ์ „ํ™”ํ•ด์•ผ ํ• ์ง€๋„ ๋ชฐ๋ผ
๋ณต์‚ฌ?

2015 ๋…„ 10 ์›” 15 ์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 7์‹œ Marten van Kerkwijk <
[email protected]> ์ž‘์„ฑ :

๋‚˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ "๋ณต์‚ฌ"๊ฐ€
์‹ค์ œ๋กœ ์‚ฌ๋ณธ ์ธ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋˜ ์ฐพ์„ ๊ฒƒ์ด๋ผ๋Š” ์ธ์ƒ,
๋”ฐ๋ผ์„œ ๋™์ผํ•œ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์ž‘์ง€๋งŒ ์œ ์šฉํ•œ ๊ณตํ—Œ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค
numpy ์ „์ฒด๊ฐ€ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ๋ณด๋‹ค ์ผ๊ด€๋˜๊ฒŒ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ๋„๋ก
(์ด์ „์— np.broadcast_arrays๋กœํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์ข‹์€ ๋Œ€์ฒด๋ฌผ์€ ์—†์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ ๊ฐ€๋Šฅ). ๊ทธ๋Ÿฌ๋‚˜ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ
์šฐ๋ฆฌ๊ฐ€ subok = False์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๊ฐ‡ํ˜€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค.

์–ด์จŒ๋“  @jjhelmus https://github.com/jjhelmus , ๋น ๋ฅธ PR์„ ํ•ด๋ณด๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š” ?
๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ๋ณด์‹ญ๋‹ˆ๊นŒ?

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/numpy/numpy/issues/3474#issuecomment -148395201.

Nathaniel J. Smith- http :

์˜ˆ, np.copy๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ +1์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค๋ฆฌ ๋ฐฐ์—ด์—์„œ copy ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์‹ญ์‹œ์˜ค.

subok ๋„ ์ง€์›ํ•˜์ง€ ์•Š์„ ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์กด์žฌํ•œ๋‹ค๋ฉด __copy__ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’์ด False ์ธ ํ•จ์ˆ˜์— subok ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” PR # 6509๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ํ† ๋ก ์„ ์—ด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ผ๋ฐ˜์ ์œผ๋กœ PR, ๋ฌธ์ œ ๋˜๋Š” ๋ฉ”์ผ ๋ง๋ฆฌ์ŠคํŠธ์—์„œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Api ํ† ๋ก ์€ ๋ฉ”์ผ ๋ง๋ฆฌ์ŠคํŠธ์— ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
2015 ๋…„ 10 ์›” 18 ์ผ ์˜คํ›„ 7:37, "Jonathan J. Helmus" [email protected]
์ผ๋‹ค :

PR # 6509 https://github.com/numpy/numpy/pull/6509 ์ƒ์„ฑ
_subok_ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ณธ๊ฐ’ _False_๋กœ ํ•จ์ˆ˜์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š”
์ด๊ฒƒ์„ ์ถ”์ธกํ•˜๋ฉด ์ฃผ์ œ์— ๋Œ€ํ•œ ํ† ๋ก ์ด ์—ด๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ™•์‹คํ•˜์ง€ ์•Š๋‹ค
์ผ๋ฐ˜์ ์œผ๋กœ PR, ๋ฌธ์ œ ๋˜๋Š” ๋ฉ”์ผ ๋ง๋ฆฌ์ŠคํŠธ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/numpy/numpy/issues/3474#issuecomment -149080511.

๋‚ด์ผ ์ฃผ์ œ ๋ชฉ๋ก์— ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๊ฒ ์Šต๋‹ˆ๋‹ค.

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