Numpy: ΠžΠ¨Π˜Π‘ΠšΠ: установка маски для прСдставлСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ mask = nomask Π½Π΅ распространяСтся Π½Π° Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°.

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 27 июн. 2016  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: numpy/numpy

Π’ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡΡŒ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с маской, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π½Π΅ выставлСна

>>> 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'

Π― знаю, Ρ‡Ρ‚ΠΎ моя систСма устарСла, Π½ΠΎ я спросил Π΄Ρ€ΡƒΠ³Π°, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ
ΠΈ ΠΎΠ½ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° сущСствуСт

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я Π΄ΡƒΠΌΠ°ΡŽ ΠΎ nomask , я Ρ‚Π°ΠΊΠΆΠ΅ вспоминаю Ρ†ΠΈΡ‚Π°Ρ‚Ρƒ Π”ΠΎΠ½Π°Π»ΡŒΠ΄Π° ΠšΠ½ΡƒΡ‚Π°: Β«ΠŸΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ оптимизация - ΠΊΠΎΡ€Π΅Π½ΡŒ всСх Π·ΠΎΠ»Β».

МнС каТСтся, Ρ‡Ρ‚ΠΎ nomask Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… случаСв, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ΠΈΠ·-Π·Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ повСдСния, довольно Π²Π΅Π»ΠΈΠΊΠΎ, ΠΈ ΠΈΠ·-Π·Π° этого ΠΈΡ… становится Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

Если Π±Ρ‹ Π±Ρ‹Π»ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π° Π»ΠΈ маска ΠΈΠ»ΠΈ Π½Π΅Ρ‚, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠ°ΠΊ has_mask , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ свой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ интСрСс ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ nomask ?

ВсС 4 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎ Π² мастСрС (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 . ВСроятно, это сводится Π»ΠΈΠ±ΠΎ ΠΊ внСсСнию ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² замаскированныС массивы, Π»ΠΈΠ±ΠΎ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ класса Π² Ρ†Π΅Π»ΠΎΠΌ. ΠœΠΎΠΆΠ΅Ρ‚ стоит нэп ΡΠΊΠΎΠ»ΠΎΡ‚ΠΈΡ‚ΡŒ. Π― Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ маскированныС массивы, поэтому Π»ΡƒΡ‡ΡˆΠ΅ всСго это Π΄Π΅Π»Π°Ρ‚ΡŒ людям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½Π° такая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ