.... ์ฌ๊ธฐ์ "์๊ธฐ์น ์์"์ _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]
๋ฐํํฉ๋๋ค (์ด์์ ์ผ ์ ์์).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.
๋ด์ผ ์ฃผ์ ๋ชฉ๋ก์ ์ด๋ฉ์ผ์ ๋ณด๋ด๊ฒ ์ต๋๋ค.