์์
์ค์ ๋ฐ์ํ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ง์คํฌ๊ฐ ์ค์ ๋์ง ์์์ ๋์ ๋ฌธ์
>>> a =np.arange(6,dtype=np.float64).reshape((2,3))
>>> a
array([[ 0., 1., 2.],
[ 3., 4., 5.]])
>>> am = np.ma.masked_array(a)
>>> am
masked_array(data =
[[ 0. 1. 2.]
[ 3. 4. 5.]],
mask =
False,
fill_value = 1e+20)
>>> am[0][1]=np.ma.masked
>>> am
masked_array(data =
[[ 0. 1. 2.]
[ 3. 4. 5.]],
mask =
False,
fill_value = 1e+20)
###--------- doesn't work----------------
>>> am[0,1]=np.ma.masked
>>> am
masked_array(data =
[[0.0 -- 2.0]
[3.0 4.0 5.0]],
mask =
[[False True False]
[False False False]],
fill_value = 1e+20)
###-------this way it works---------
>>> am[1][1]=np.ma.masked
>>> am
masked_array(data =
[[0.0 -- 2.0]
[3.0 -- 5.0]],
mask =
[[False True False]
[False True False]],
fill_value = 1e+20)
###--------now it surprisingly works again--
Linux 3.19.8-100.fc20.x86_64
Python 2.7.5
>>> np.__version__
'1.8.2'
๋ด ์์คํ
์ด ์ต์ ์ํ๊ฐ ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง
๋ฌธ์ ๊ฐ ์์์ ํ์ธํฉ๋๋ค.
๋ง์คํฐ (1.12)์์ ํ์ธ๋์์ต๋๋ค. ์ด๊ฒ์ # 5580์ด ๊ณ ์น๊ธฐ๋ฅผ ๋ฐ๋ฌ๋ ๊ฒ๊ณผ ๊ฐ์ง๋ง, ์ฌ๊ธฐ์ ๋
ผ์ํ ๋ฐ์ ๊ฐ์ด np.nomask
๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด MaskedArray๋ฅผ ์ ๋ฐ ๊ฒ์ฌํ์ง ์๊ณ ๋์ด ํน๋ณํ ๊ฒฝ์ฐ๋ฅผ ๊ณ ์น ์ ์์ต๋๋ค.
๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. MaskedArrays๋ ๋๋๋ก ๋ง์คํฌ๋ฅผ ๋ถ์ธ ๋ฐฐ์ด๋ก ์ ์ฅํ๊ณ , ๋๋ก๋ (๋ง์คํน ๋ ๊ฐ์ด์๋ ๊ฒฝ์ฐ) ๋ง์คํฌ๋ฅผ False
(๋ฐ np.nomask == False) ๊ฐ์ผ๋ก ๊ฐ๋จํ ์ ์ฅํฉ๋๋ค.
๋ฌธ์ ๋ MaskedArray๋ฅผ ์ฌ๋ผ์ด์ฑ ํ ๋ (๊ทธ๋ฆฌ๊ณ ๋ทฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋) ๋ง์คํฌ๊ฐ ํ์ฌ ๋ถ์ธ ๋ฐฐ์ด ์ธ ๊ฒฝ์ฐ์๋ง "๋ณผ ์ ์์ง๋ง"์์ "False"์ธ ๊ฒฝ์ฐ์๋ ๋ณผ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ am[0][1] = ...
์ฒ์ ์๋ ํ ๋ ๋ง์คํฌ๋ ์์ "False"์ด๋ฉฐ ๋ณผ ์ ์์ผ๋ฏ๋ก ์
๋ฐ์ดํธ๋์ง ์์ต๋๋ค. ๋ ๋ฒ์งธ๋ก ์๋ํ๋ฉด ๋ง์คํฌ๊ฐ ๋ถ์ธ ๋ฐฐ์ด๋ก ์ ์ฅ๋์ด ๋ณผ ์ ์์ผ๋ฏ๋ก ์
๋ฐ์ดํธ๋ฉ๋๋ค.
์ด nomask
๋์์ธ (์ : # 7588)์ผ๋ก ์ธํ ๊ธด ๋ฒ๊ทธ ๋ชฉ๋ก์ ์ด๊ฒ์ ์ถ๊ฐํฉ๋๋ค.
nomask
์๊ฐํ ๋๋ง๋ค Donald Knuth๊ฐ "์กฐ๊ธฐ ์ต์ ํ๋ ๋ชจ๋ ์
์ ๊ทผ์"์ด๋ผ๋ ๋ง๋ ์๊ฐํฉ๋๋ค.
nomask
๋ ์์ธ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋์์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋น์ ์์ ์ธ ์ฌ๋ก์ ์๊ฐ ์๋นํ ๋ง์ผ๋ฉฐ ์ด๋ก ์ธํด ํด๊ฒฐํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง๋๋ค.
๋ง์คํฌ๊ฐ ์ฌ์ํ ๊ฒ์ธ์ง ์๋์ง๋ฅผ ์๋ ๊ฒ์ด ์ ๋ง ์์ฐ์ ์ธ ์ผ์ด๋ผ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ์บ์ํ๋ has_mask
์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
nomask
์์ ํ ์ ๊ฑฐํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๊น?
๋๋ ๋ํ์ด ๋ฌธ์ ์ ๋ถ๋ช์ณค๋ค๋ ์ ์์ ์ฐจ์ํ๊ณ ์ถ์ต๋๋ค. ์ด์ ๋ํ ๋ฌธ์ ์ ๋ฉ๋ชจ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ค์์ ๋ทฐ์ ๋ง์คํฌ๋ฅผ ์์ ํ๋ฉด ์๋ณธ์ ๋ง์คํฌ๊ฐ ์์ ๋๋ค๋ ๊ฒ์ ๋์๊ฒ ์ ์ํฉ๋๋ค.
์ฌ๋ผ์ด์ค์ ์ก์ธ์ค ํ ๋ ์ถ๋ ฅ์
data
์์ฑ์ด ์๋ณธ ๋ฐ์ดํฐ์ ๋ทฐ์ด๊ณ ๋ง์คํฌ๊ฐnomask
์ธ ๋ง์คํฌ ๋ ๋ฐฐ์ด์ ๋๋ค (์๋ ๋ฐฐ์ด์ ์๋ชป๋ ํญ๋ชฉ์ด์๋ ๊ฒฝ์ฐ). ๋๋ ์๋ ๋ง์คํฌ์ ํด๋น ์ฌ๋ผ์ด์ค๋ณด๊ธฐ. ๋ง์คํฌ ์์ ์ฌํญ์ ์๋ณธ์ผ๋ก ์ ํํ๋ ค๋ฉด ๋ทฐ๊ฐ ํ์ํฉ๋๋ค.
๋ ธ ๋ง์คํฌ๋ฅผ ์์ ํ ์ ๊ฑฐํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๊น?
masked
ํฉ๋๋ค. ์ด๋ ์๋ง๋ ๋ง์คํน ๋ ๋ฐฐ์ด์ ํฌ๊ฒ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋ก์ด ํด๋์ค๋ฅผ ๋ชจ๋ ๊ตฌํํ๋ ๊ฒ์ผ๋ก ๊ท๊ฒฐ ๋ ๊ฒ์
๋๋ค. NEP๋ฅผ ๊ตฌ์ฑ ํ ๊ฐ์น๊ฐ์์ ์ ์์ต๋๋ค. ๋๋ ๋ง์คํน ๋ ๋ฐฐ์ด์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๊ธฐ๋ฅ์ ํ์๋กํ๋ ์ฌ๋๋ค์ด ๊ฐ์ฅ ์ํ๋ ์ผ์
๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
nomask
์๊ฐํ ๋๋ง๋ค Donald Knuth๊ฐ "์กฐ๊ธฐ ์ต์ ํ๋ ๋ชจ๋ ์ ์ ๊ทผ์"์ด๋ผ๋ ๋ง๋ ์๊ฐํฉ๋๋ค.nomask
๋ ์์ธ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋์์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋น์ ์์ ์ธ ์ฌ๋ก์ ์๊ฐ ์๋นํ ๋ง์ผ๋ฉฐ ์ด๋ก ์ธํด ํด๊ฒฐํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง๋๋ค.๋ง์คํฌ๊ฐ ์ฌ์ํ ๊ฒ์ธ์ง ์๋์ง๋ฅผ ์๋ ๊ฒ์ด ์ ๋ง ์์ฐ์ ์ธ ์ผ์ด๋ผ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ์บ์ํ๋
has_mask
์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.nomask
์์ ํ ์ ๊ฑฐํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๊น?