ΠΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΌΠ°ΡΠΊΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π½Π΅ Π²ΡΡΡΠ°Π²Π»Π΅Π½Π°
>>> 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 Π½Π°Π΄Π΅ΡΠ»ΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΎΡΡ ΡΠ°ΠΌ, ΡΡΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π±Π΅Π· ΠΊΠ°ΠΏΠΈΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΌΠΎΠ½ΡΠ° MaskedArray Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ np.nomask
.
ΠΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: MaskedArrays ΠΈΠ½ΠΎΠ³Π΄Π° Ρ
ΡΠ°Π½ΡΡ ΠΌΠ°ΡΠΊΡ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π° ΠΈΠ½ΠΎΠ³Π΄Π° (Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ) ΡΠΎΡ
ΡΠ°Π½ΡΡΡ ΠΌΠ°ΡΠΊΡ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ False
(ΠΈ np.nomask == False).
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ Π½Π°ΡΠ΅Π·ΠΊΠ΅ MaskedArray (ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ) ΠΌΠ°ΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Β«ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π½Π°Β» ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π½Π΅ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Β«FalseΒ». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠ΅ am[0][1] = ...
ΠΌΠ°ΡΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΉ "False" ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π½Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ. ΠΡΠΈ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΌΠ°ΡΠΊΠ° ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ.
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΎ Π² Π΄Π»ΠΈΠ½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ, Π²ΡΠ·Π²Π°Π½Π½ΡΡ
ΡΡΠΈΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ nomask
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, # 7588.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Ρ Π΄ΡΠΌΠ°Ρ ΠΎ nomask
, Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Ρ ΡΠΈΡΠ°ΡΡ ΠΠΎΠ½Π°Π»ΡΠ΄Π° ΠΠ½ΡΡΠ°: Β«ΠΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ - ΠΊΠΎΡΠ΅Π½Ρ Π²ΡΠ΅Ρ
Π·ΠΎΠ»Β».
ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ nomask
Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΡΡ
ΡΠ»ΡΡΠ°Π΅Π², Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ ΠΈΠ·-Π·Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π²Π΅Π»ΠΈΠΊΠΎ, ΠΈ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΈΡ
ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΡΠ΄Π½Π΅Π΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ.
ΠΡΠ»ΠΈ Π±Ρ Π±ΡΠ»ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ ΡΠ·Π½Π°ΡΡ, ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π° Π»ΠΈ ΠΌΠ°ΡΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅Ρ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠ°ΠΊ has_mask
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΡΡΠΈΡΡΠ΅Ρ ΡΠ²ΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ nomask
?
Π₯ΠΎΡΡ ΡΠΎΠΎΠ±ΡΠΈΡΡ, ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΌ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ . Π‘Π»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΌΠ½Π΅, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ ΠΌΠ°ΡΠΊΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°.
ΠΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΡΠ΅Π·Ρ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π·Π°ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π°ΡΡΠΈΠ±ΡΡ
data
ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , Π° ΠΌΠ°ΡΠΊΠ° - Π»ΠΈΠ±ΠΎnomask
(Π΅ΡΠ»ΠΈ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅ Π±ΡΠ»ΠΎ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ) ΠΈΠ»ΠΈ Π²ΠΈΠ΄ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΊΠΈ. ΠΠΈΠ΄ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠ°ΡΠΊΠΈ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π».
ΠΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ Π½ΠΎΠΌΠ°ΡΠΊ?
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π΅ΡΠ΅ ΠΈ masked
. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈΠ±ΠΎ ΠΊ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ
-ΡΠΎ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π·Π°ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ, Π»ΠΈΠ±ΠΎ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΡΠ΅Π»ΠΎΠΌ. ΠΠΎΠΆΠ΅Ρ ΡΡΠΎΠΈΡ Π½ΡΠΏ ΡΠΊΠΎΠ»ΠΎΡΠΈΡΡ. Π― ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π»ΡΠ΄ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΌ Π½ΡΠΆΠ½Π° ΡΠ°ΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Ρ Π΄ΡΠΌΠ°Ρ ΠΎ
nomask
, Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Ρ ΡΠΈΡΠ°ΡΡ ΠΠΎΠ½Π°Π»ΡΠ΄Π° ΠΠ½ΡΡΠ°: Β«ΠΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ - ΠΊΠΎΡΠ΅Π½Ρ Π²ΡΠ΅Ρ Π·ΠΎΠ»Β».ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ
nomask
Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΡΡ ΡΠ»ΡΡΠ°Π΅Π², Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ ΠΈΠ·-Π·Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π²Π΅Π»ΠΈΠΊΠΎ, ΠΈ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΡΠ΄Π½Π΅Π΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ.ΠΡΠ»ΠΈ Π±Ρ Π±ΡΠ»ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ ΡΠ·Π½Π°ΡΡ, ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π° Π»ΠΈ ΠΌΠ°ΡΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅Ρ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠ°ΠΊ
has_mask
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΡΡΠΈΡΡΠ΅Ρ ΡΠ²ΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.ΠΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ
nomask
?